Protostar heap1 Writeup

CTF 중점 스터디

2019. 12. 9. 22:56

코드를 살펴보자

 

우선 gdb로 첫번째 malloc eax 값을 받아와서 heap 의 시작 주소를 알아보자!

Main + 25 breakpoint를 건 후 인자값으로 AAAA BBBB 를 넣고 확인해보면

Heap 의 시작 주소는 0x405250인 것을 알 수 있다!

시작 주소를 알았으니 끝에 puts 함수 직전에 break point를 걸어 그 전까지 실행한 후 힙 구조를 분석해보자.

 

이렇게 나오는데 이 부분을 세밀하게 분석해보면

이렇게 된다.

따라서 strcpy 함수를 이용해서 printf GOT주소를 winner() 주소로 바꿔주면 될 것이다. (최적화 문제로 여기선 puts함수이다.)

Printfgot 주소를 알아보면,

Got 주소는 0x404020 임을 알 수 있다.

다음으로 winner`pyth 함수 주소를 알아보면

 

따라서 저기 노란색 부분을 got 주소를 넣어 준 후! Argv[2]win함수의 주소로 바꿔주면 되므로!

페이로드를 작성해보자!

./heap1 `python -c 'print "A"*40+"\x20\x40\x40 "+" "+"\x62\x11\x40 "'’

작성자 : 고현정

'CTF 중점 스터디' 카테고리의 다른 글

pwnable.kr bof write up  (0) 2019.12.15
N00bCTF Compare Write-up  (0) 2019.12.14
Pwnable.kr asm Write-up  (0) 2019.12.08
TUCTF Faker Write Up  (0) 2019.12.08
N00bCTF_very ezzzzz!!_정세인  (0) 2019.12.01