Веб-сайт я работал, был недавно предпринят, чтобы быть взломанным следующим сценарием Внедрения SQL
boys' and 3=8 union
select 1,
concat(0x232425,ifnull(`table_name`,0x30),char(9),ifnull(`table_rows`,0x30), char(9),0x252423),
3,4,5,6,7,8,9
from `information_schema`.`tables`
where table_schema=0x62646B3032 limit 44,1 -- And '8'='8
Эта инжекция возвратила mysql имя таблицы. Об этом сообщила система сообщения об ошибке на том веб-сайте, и нам удалось зафиксировать ту часть однако, я не могу понять то, что делает вышеупомянутую среднюю инжекцию?
Кто-либо может объяснить это?
Penuel
Согласно this MySQL concat ()
Возвращает строку, которая получается из объединение аргументов. Можно иметь один или несколько аргументов. Я упал аргументы - это недвоичные строки, Результат - недвоичная строка. Если аргументы включают любые двоичные строки, результат - двоичная строка. А числовой аргумент преобразуется в его эквивалентная двоичная строковая форма
Итак, 0x232425 преобразуется в # $%, который просто добавляется в начало и конец поля table_name. Может быть, просто для того, чтобы им было проще извлекать имена таблиц позже с помощью Regex.
Позже char (9) эквивалентен табуляции, как вы можете видеть здесь , и служит только для лучшего форматирования вывода.
3,4,5,6,7,8,9 просто там, так что столбцы соответствуют таблице мальчиков, на которой они выполняют Союз.
Эта инъекция вернула имя таблицы mysql.
Вы имеете в виду, что ваш веб-сайт отображал имя таблицы, когда вы вводили этот ввод, или что запрос возвращает его при запуске из клиента mysql? Если это было показано на вашем веб-сайте, злоумышленник имеет возможность вводить гораздо более вредоносные запросы. Проверьте свои данные.
Они используют выбор из представлений информационной схемы на сервере mysql:
http://dev.mysql.com/doc/refman/5.0/en/information-schema.html
Они используют некоторые хитрые хаки для устранения простых методов предотвращения SQL-инъекций.