-
[HackCTF : Pwnable] Basic_BOF #2 (100p)Wargame/HackCTF 2021. 5. 31. 17:15
[HackCTF : Pwnable] Basic_BOF #1 (100p)
문제 checksec ??? 주어진 문제 파일을 실행해보니 입력을 받은 후
이상한 문자열을 출력한다.
main gdb를 이용해 분석해보자.
fgets eax에 [ebp-0x8c]의 주소를 넣고 eax에 입력을 받는다.
즉 [ebp-0x8c]에 입력을 받는다.
call eax eax에 [ebp-0xc]의 주소를 넣고 eax를 call 한다.
fget가 [ebp-0x8c]에서부터 입력받고, [ebp-0xc]를 call 하기 때문에
0x80(0x8c-0xc) 만큼 dummy로 채워주고 쉘 코드 주소를 넣어주면 쉘이 실행될 것 같다.
실제로 그러한지 확인해보자.
b *main+53
r
AAAAAAAA
입력 받은 곳의 주소는 0xffffcf3c이고
[ebp-0xc]는 0xffffcfbc로 0x80만큼의 공간이 있다.
이제 쉘 코드의 주소만 알아내면 되는데
NX bit가 걸려있어 쉘 코드를 삽입하여 실행할 수 없다.
shell 그래서 우선 함수들을 살펴보면 이러한 shell이라는 함수가 있는데
아래와 같이 /bin/dash를 실행하는 것을 알 수 있다
shell 이제 공격해보자.
payload는 아래와 같다.
from pwn import * p=remote("ctf.j0n9hyun.xyz",3001) payload = "A"*128+p32(0x0804849b) p.sendline(payload) p.interactive()
성공 HackCTF{h3y_dud3_600d_f0r_y0u}
'Wargame > HackCTF' 카테고리의 다른 글
[HackCTF : Pwnable] x64 Buffer Overflow (150p) (0) 2021.06.01 [HackCTF : Pwnable] 내 버퍼가 흘러넘친다!!! (150p) (0) 2021.06.01 [HackCTF : Pwnable] Basic_BOF #1 (100p) (0) 2021.05.28 [HackCTF : Forensics] 세상에서 잊혀진 날 찾아줘! (150p) (0) 2021.05.18 [HackCTF : Forensics] Secret Document (150p) (0) 2021.05.18