Уязвимости в XGP

Apecccik

Новичок
Репутация
0 / 51
Доброго времени.
В общем вчера малый добавил себе миллионы ТМ и ресурсов.
Прикрыл дырку в кукисах, прикрыл сохранение настроек.
Поймал его пару ошибок.
Вот они http://clip2net.com/s/Wusq
Кто подскажет, где копаться?
 
Доброго времени.
В общем вчера малый добавил себе миллионы ТМ и ресурсов.
Прикрыл дырку в кукисах, прикрыл сохранение настроек.
Поймал его пару ошибок.
Вот они http://clip2net.com/s/Wusq
Кто подскажет, где копаться?


страница быстрых ссылок флота. вместо имени закладки пишет SQL запрос. сделай проверки там. по умолчанию идет прямой запрос в БД. пропусти через обработчик.
 
страница быстрых ссылок флота. вместо имени закладки пишет SQL запрос. сделай проверки там. по умолчанию идет прямой запрос в БД. пропусти через обработчик.
Спасибо. Не подскажешь, какой это файл и какой функцией эффективнее фильтровать?
 
Спасибо. Не подскажешь, какой это файл и какой функцией эффективнее фильтровать?
лично я запрещал написание спец символов в строке.только буквы и цифры. файл точно не могу сказать.у самого другая сборка. ищи тот, который формирует странице ссылок флота. что-то похожее на shorcout

тоже самое сделай в настройках с полем почты. там тоже может быть лазейка.
 
лично я запрещал написание спец символов в строке.только буквы и цифры. файл точно не могу сказать.у самого другая сборка. ищи тот, который формирует странице ссылок флота. что-то похожее на shorcout

тоже самое сделай в настройках с полем почты. там тоже может быть лазейка.
Уязвимость так же в кукисах есть.
Мне кажется, что наиболее эффективна будет функция, mysql_escape_string(); или я не прав?
 
я использовал нечто вроде

if(!preg_match("/^[a-zA-Z0-9]+$/",$user))

тоесть можно только англ буквы и цифры.

так же сюда добавить русские буквы.

а в куках что?какая уязвимость?
 
я использовал нечто вроде

if(!preg_match("/^[a-zA-Z0-9]+$/",$user))

тоесть можно только англ буквы и цифры.

так же сюда добавить русские буквы.

а в куках что?какая уязвимость?
http://dapf.ru/index.php?showtopic=13044 прошу сюда. Сейчас покажу код, дашь консультацию =)
 
я использовал нечто вроде

if(!preg_match("/^[a-zA-Z0-9]+$/",$user))

тоесть можно только англ буквы и цифры.

так же сюда добавить русские буквы.

а в куках что?какая уязвимость?
Код:
if (isset($_POST["db_email"]) && $_POST["db_email"] != '' && is_email($_POST["db_email"]))
            {
if (!preg_match("/^[a-zA-Z0-9]+$/",$db_email)){header("Location: game.php?page=overview"); exit;}
                $db_email = mysql_escape_string ( $_POST['db_email'] );

            }
            else
            {
                $db_email = $CurrentUser['email'];
            }
Как не странно, символы проходят, а нормальный email не сохраняется :pistol:
 
ну вот тут не понятно

{header("Location: game.php?page=overview"); exit;}


нафиг тут хедер?

сделай просто редирект с отображением ошибки. типа "разрешены только буквы и цифры"

но для почты добавь еще в знаки _ @ .

добавлю сюда еще один баг. иногда при отмене полета флота дублируется флот и ресурс что был в нем.
 
ну вот тут не понятно

{header("Location: game.php?page=overview"); exit;}


нафиг тут хедер?

сделай просто редирект с отображением ошибки. типа "разрешены только буквы и цифры"

но для почты добавь еще в знаки _ @ .

добавлю сюда еще один баг. иногда при отмене полета флота дублируется флот и ресурс что был в нем.
Сделал просто через mysql_real_escape_string(); . Думаю, что работать будет
 
он мог не использовать кавычки. только запятые.ну это как вариант...
 
На днях регулярку напишу, прикрою дырку в ShowFleetShortcuts.php, да выложу фиксы
этот баг давным давно все закрыли. да и проверка там элементарная. так что никакие регулярки там не нужны.
 
Просто интересно, почему же при mysql_escape_string (); инъекция проходила... <_<

Ну вопервых риал учитывает кодировку а простой эскейп нет
Вовторых нужно выставлять ' для безопасности в запросе, типа
Код:
UPDATE `gamedb` SET `user_pass` = '111111'

кавычки важный момент безопасности, вместе с экранированием дают хороший результат.

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

и кстати, для полной уверенности лучше перед эскейпом обрабатывать переменные stripslashes(), что бы не запутаться двойным экранированием.
 
Сверху