e_yejun
Jun_ : Pwn
e_yejun
전체 방문자
오늘
어제
  • 분류 전체보기 (240)
    • Profile (1)
    • Pwnable (54)
    • Reversing (14)
    • Network (8)
    • Forensic (10)
    • Embedded (4)
    • Android (2)
    • Web (18)
    • 알고리즘 (42)
    • 프로그래밍 (24)
    • 프로젝트 (6)
    • 1-day (7)
    • CTF (15)
    • 기타 (33)
    • 일기장 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • how2heap
  • BOF
  • x64
  • rev-basic
  • dvwa
  • X86
  • dreamhack.io
  • wargame
  • 1-day
  • Heap

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
e_yejun

Jun_ : Pwn

[HackCTF] Basic_BOF #2 Write-up
Pwnable

[HackCTF] Basic_BOF #2 Write-up

2019. 12. 16. 16:21

HackCTF site : https://ctf.j0n9hyun.xyz/

 

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

 

Basic_BOF #2

 

먼저, 파일을 다운로드 합니다.

 

 

 

 

다운받은 파일에 실행권한을 부여합니다.

 

 

 

 

메모리 보호기법 확인

 

 

 

 

파일을 실행해봅시다.

 

 

"하 앙 ㅏ아 앙 ㅏ앙 아앙아앙앙"

;;;;

 

 

 

이제 IDA를 사용해서 파일을 까봅시다.

 

 

 

 

IDA 왼쪽 Functions window창에서 바이너리에 올라간 함수정보들을 볼 수 있습니다.

* 더블클릭하면 코드 또한 볼 수 있어요!

 

main 함수와 더불어 뭔가 의심스러운 shell 함수를 찾을 수 있습니다.

 

 

 

* GDB에서는 info function 으로 찾을 수 있음.

 

 

 

 

 

 

먼저 shell 함수부터 확인해봅시다.

 

shell 함수를 실행시키면 쉘을 얻을 수 있습니다.

Functions Window 창에서 함수 시작 주소를 알 수 있습니다.

 

shell 함수 주소 : 0x0804849B

 

 

 

 

다음으로 main 함수를 열어봅시다.

 

 

코드를 보면 v5에 sup함수의 주소를 넣고,

s변수에 133byte만큼 입력을 받습니다.

 

이후, v5변수에 담긴 함수를 실행하게 됩니다.

 

 

* sup함수도 열어보면, 입력받은 s변수를 그대로 출력해주게 됩니다.

 

 

 

다시돌아와서,

 

s변수는 ebp로부터 0x8C, 즉 140byte 만큼의 거리차이가 있어서 RET를 조작할 수 없습니다.

하지만 입력받는 s보다 함수의 주소를 담고 있는 v5가 더 높은 주소라는 것을 알 수 있습니다.

 

이를 통해 s변수에서 v5의 주소값을 바꿔주면 그 주소에 해당하는 함수가 실행되게 됩니다.

 

 

s : ebp-8C

v5 : ebp-C

 

 

IDA 아래 Output window에서 내장된 파이썬으로 계산할 수 있습니다.

 

 

s와 v5의 거리 : 128byte

 

입력을 128byte가량 채우고 그 다음 들어가는 입력값을 통해 v5변수의 함수 주소를 바꾸면 되겠죠?

 

바로 해봅시다.

 

 

<exploit code>

 

 

실행!

 

 

<exploit>

정상적으로 쉘을 실행시켰습니다.

ls

 

플래그가 보이고 읽으면

플래그를 얻을 수 있습니다.

 

 

clear ~_~

 

 

 

    'Pwnable' 카테고리의 다른 글
    • [HackerSchool] FTZ Level13 풀이
    • [HackerSchool] FTZ Level12 풀이
    • [HackCTF] Basic_BOF #1 Write-up
    • [HackerSchool] FTZ Level11 풀이 (환경변수)
    e_yejun
    e_yejun
    정리노트 •_•

    티스토리툴바