ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Pwn] Offset
    CTF write_up/Hack CTF 2019. 9. 24. 00:27

     

    해당 문제를 한번 실행해 보겠습니다.

     

    checksec 명령어를 한번 입력해 보겠습니다.

     

    IDA 32bit를 이용해서 열어보겠습니다.

     

    gets 함수가 보이므로 bof 문제네요!

     

    select_func함수로 입력한 변수 s의인자를 같이 전달 합니다.

     

    전달받은 값을 dest 변수에 넣고 그 값이 one 이면 v3의 값을 one 함수로 보내는 기능을 하는 코드 입니다.

     

    select_func함수의 변수 stack 모형을 한번 그려 보겠습니다.

     

    |----------------|

    | dest [ebp-2A] | == src

    |----------------|

    |   v3   [ebp-C] |

    |----------------|

    |   SFP  [ebp-0] |

    |----------------|

    |  RET  [ebp+4] |

    |----------------|

    |   src  [ebp+8] |

    |----------------|

     

    의 형태를 가지고 있습니다.

     

    결국에는 v3의 주소로 return 되기 때문에 v3의 주소를 print_flag 함수로 변조 하면 될 것 같습니다.

     

    dest와 v3의 거리는 2A-C = 0x1E이기 때문에 dummy값 30개를 넣고 나서 그뒤로 더입력을 하면 v3가 덮히게 됩니다.

     

    print_flag()의 주소는 다음과 같습니다.

     

    0x6D8 입니다.

     

    exploit code를 작성해 보겠습니다.

     

     

    Flag : HackCTF{76155655017129668567067265451379677609132507783606}

     

     

     

    'CTF write_up > Hack CTF' 카테고리의 다른 글

    [Pwn] g++ pwn  (0) 2019.09.24
    [Pwn] BOF_PIE  (0) 2019.09.24
    [Pwn] x64 Simple_size_BOF  (0) 2019.09.24
    [Pwn] Basic_FSB  (0) 2019.09.20
    [Pwn] x64 Buffer Overflow  (0) 2019.09.20

    댓글

Designed by Tistory.