Нет, я считаю, что вы неправильно понимаете цель NULL в вышеуказанном запросе. Цель запроса - просто вернуть столбец новостей из таблицы новостей для выбранной статьи. Хакер поставляет значение NULL, которое никогда не равно ни к чему, и поэтому первый запрос не вернет строку. Как часть предоставленного параметра для взлома, они пытаются вернуть результаты из таблицы пользователей. Предполагая, что значение id является положительным набором целых чисел, поставка строки атаки -1 UNION ALL select * from users
сделала бы то же самое.
Если это не продукт COTS, где известна схема, как только вы обнаружите, что сайт уязвим для инъекционной атаки, следующий шаг состоит в том, чтобы выяснить, что такое базовая СУРБД, а затем какие данные доступны. Контрольные вещи были бы тем, что я хотел бы использовать, чтобы увидеть, что веб-ответ, который обычно мгновенен, теперь занимает 5, 10, 30 секунд. Это говорит мне, что у меня есть хорошая идея, что это цель MySQL.
Следующая задача - получить данные. В приведенном выше примере возвращается только один столбец данных, но мы запросили все столбцы. Это не скомпилируется, по крайней мере, в мире SQL Server, потому что движок увидит, что первый возвращает 1 столбец, а второй возвращает N столбцов. Вместо этого вам нужно либо выборочно возвращать столбцы, либо объединять их вместе.
Если вы просто отправляетесь по вредоносному маршруту, это проще, чем все, что вы делаете, это заменить ваши команды delete/drop и не беспокоиться о формировании атакованного вывода в предопределенной форме.
http://xkcd.com/327/ (SCNR) – luksch
@luksch Да. видели это раньше :) lol – Karan
Я серьезно не знаю, почему мои вопросы затушевываются. Это, вероятно, не в первый раз. – Karan