ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HackCTF x64 Buffer Overflow
    Wargame/HackCTF 2019. 10. 15. 01:15

    빨리 잘거에요ㅎ

    이번엔 64비트 프로그램 BOF문제라서 IDA64를 써야하나 싶었어요 그래서 찾아보는데 토렌트로 다운받기가 너무 오래 걸려서 그냥 gdb로 까서 해결해봤습니다 물론 인터넷의 힘을 빌려서..^^

     

    main 함수를 보면 별다른 단서가 없습니다. 특별히 다른 함수를 호출하지도 않고, 그냥 입력받은 그대로 앞에 Hello를 붙여서 출력하는 프로그램 같이 보여요 그래서 타함수 목록을 보겠습니다

    그러면 main함수 직전?에 callMeMaybe 함수가 보이는데 굉장히 의심스럽죠 아마도 쉘함수가 아닐까 추측됩니다

    까보면 rbp-0x20에 0x400734 주소에 있는 값을 넘겨주는데, 이를 rax와 rcx에도 넘겨주는 거 같네요(참고 : rax는 64비트 프로그램의 eax입니다) 이젠 0x400734 주소의 값이 의심스러우므로 그 값을 더 살펴보겠습니다

    깊숙히 까보면 0x6e69622f가 나오는데, 이 앞뒤 주소의 값들을 HxD에 넣어서 값을 확인해보면

    좀 짤리긴 했지만 대충 /bin/bash가 나오는 것을 알 수 있습니다. 예측했던대로 callMeMaybe 함수는 쉘함수였던 거겠죠

    다시 main함수를 보면, scanf함수 직후에 rbp-0x110으로 272바이트만큼 입력받는 것을 확인할 수 있습니다. scanf함수는 아시다시피 bof 취약점이 있는 함수이며, 이 직후에 RSP는 32비트에서 4바이트였으므로 64비트에서는 8바이트를 추가로 붙여줘야 합니다.

    272 + 8 = 280

    마지막 페이로드에서도 callMeMaybe 함수 주소까지 8바이트를 맞춰줘야 합니다. 64비트도 어렵진 않지만 32비트 BOF가 익숙한 이들에게는 조금 덧붙여야 할 귀찮은게 있네요

    성공적으로 플래그를 띄우는 것까지 확인할 수 있습니다.

     

    중간까지는 뭔소린지 이해 안 가서 피곤하다가 갑자기 이해되니까 재밌어지네요

    수학도 이렇게 재밌었으면..

    'Wargame > HackCTF' 카테고리의 다른 글

    HackCTF Simple_Overflow_ver_2  (0) 2019.10.17
    HackCTF x64 Simple_size_BOF  (3) 2019.10.15
    HackCTF 내 버퍼가 흘러넘친다!!!  (0) 2019.10.14
    HackCTF BOF_Basic#2  (0) 2019.10.13
    HackCTF Home(WEB)  (0) 2019.08.30
Designed by Tistory.