ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HackCTF BOF_Basic#2
    Wargame/HackCTF 2019. 10. 13. 22:55

    간만에 포너블 라업입니다 와후

    ?? 일단 뭐 실행창입니다 제법 한국인의 스멜이 느껴지네요

    예전 파일 권한 바꾸던 때를 떠올리며 bof_basic2 파일의 권한을 변경한 뒤

    디버깅해줍니다. 잘 안 보이죠? 저도 안 보이네요.

    음 이중 한번 볼만한 함수는 shell과 sup 함수가 있겠군요

    해서 직접 찾아보면 shell 함수는 (system 함수가 포함된 것으로 보아)아마 shell 따주는 함수일거고, sup 함수는 (puts 함수가 포함된 것으로 보아)그걸 도와주는 함수겠거니 예상합니다. 또 sup 함수에서 하아앙이 출력됐을테니 이 함수쪽에서 어떻게 해주면 shell 함수를 실행할 수 있을듯 합니다. 이쯤에서 main 함수를 다시 보고 단서를 찾아봅시다

    1. fgets 함수의 주소는 0x080484fd네요

    2. 다시보니 main+20에서 ebp-0xc에 0x080484b4를 대입하는데, 0x080484b4는 sup함수의 주소입니다.

    3. 물론 실제로 함수가 호출되는 부분은 main+59입니다. 프로그램의 실행 순서가 fgets -> puts 순으로 가는 걸 봐도 알 수 있죠?

    4. 그렇다면 ebp-0xc에 대입되는 값을 shell 함수의 주소를 대입하고 호출하면 쉘을 딸 수 있습니다.

    5. 근데 그러면 어떻게 shell 함수의 주소를 대입할 수 있죠? 하던 중에 이번 문제의 제목을 떠올렸습니다.

    멍청하게도 BOF를 까먹고 있었네요 까르륵

    6. BOF를 해봅시다 그럼. fgets 함수는 ebp-0x8c에서 넘겨받고, sup함수는 ebp-0xc에서 넘겨받습니다

    7. 0x8c - 0xc = 0x80 = 128d , 128byte만큼 넘겨준 뒤 shell 함수의 주소를 입력하면 쉘을 딸 수 있습니다

     

    정리해보면, 입력해야할 바이트 : 128, shell 함수 주소 : 0x0804849b

    두 가지만 알면 간단하게 풀 수 있는 문제였는데, 저는 아이다의 hex-ray가 안된다며 찡찡댔네요.

    BOF 더 빡시게 공부해야겠습니다.

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

    HackCTF x64 Buffer Overflow  (0) 2019.10.15
    HackCTF 내 버퍼가 흘러넘친다!!!  (0) 2019.10.14
    HackCTF Home(WEB)  (0) 2019.08.30
    HackCTF Forensics 1~3  (2) 2019.08.04
    HackCTF BOF_Basic#1  (0) 2019.08.04
Designed by Tistory.