Помогите зафигачить sql-инъекцию

procenkotanya

Вчера на известном ресурсе на букву Х был выложен "инфосекьюрити-квест", который, по словам автора, был предназначен для его студентов, но, к тому же, был показан широкой аудитории ресурса Х. Под натиском которой, хе-хе, сервер сначала едва не(?) лёг, а потом А-запись в днс изменилась на 127.0.0.1. АААА, впрочем, осталась, так что из официальной™ сети его можно пройти (оригинальный линк (доступен через ipv6 линк для доступа через ipv6-over-v4 прокси). Как и в других подобных квестах, там нужно разными способами догадываться, что же нужно скормить в input, чтобы перейти на следующий уровень.
На 14 уровне (ipv4) там, видимо, нужно воспользоваться sql-инъекцией, чтобы достать пароль (как при этом автор обеспечивает, что через неё же ему не испортят ничего на сервере — хороший вопрос; возможно, что никак =) ). И что-то я не догоняю, как это сделать, ибо в sql ни в зуб ногой, а там, кажется, ещё и вложенные запросы придётся писать. Доброфорум, нужны твои подсказки!

evgen5555


http://igor701.ru.ipv4.sixxs.org/quest1/lev14showtask.php?level=15'&password='

ну вот это сработало, в принципе
подсказать, как, не могу, ибо лень разбираться

procenkotanya

Хм, что же там внутри, если такая штука работает?

evgen5555

да какая угодно обманка, включая простую заглушку

Dasar

по косвенным признакам, там:

select * from q where level = '<level>' and password = '<password>'

запрос разбирается по &, при этом
 <level> = 15'
 <password> = '
что дает запрос:

select * from q where level = '15'' and password = '''

evgen5555

Внимание, вопрос!
Почему при этом не работает конструкция типа:
password=' OR '1'='1
?

Dasar

Почему при этом не работает конструкция типа:
php-скрипт проверяет, что ему вернется определенная строка из базы, а запрос с or 1=1 возвращает все строки, что php-скрипт не ожидает
такое прокатывает
igor701.ru.ipv4.sixxs.org/quest1/lev14showtask.php?level=15'&password= and '1'='1

Dasar

меня смущает что вот такие запросы проходят:
igor701.ru.ipv4.sixxs.org/quest1/lev14showtask.php?level=15'&password='dsfsdfsf
чтобы они проходили между level и <level> должно стоять что-то отличное от '='
Оставить комментарий
Имя или ник:
Комментарий: