코드를 살펴보자
우선 gdb로 첫번째 malloc 의 eax 값을 받아와서 heap 의 시작 주소를 알아보자!
Main + 25 에 breakpoint를 건 후 인자값으로 AAAA BBBB 를 넣고 확인해보면
Heap 의 시작 주소는 0x405250인 것을 알 수 있다!
시작 주소를 알았으니 끝에 puts 함수 직전에 break point를 걸어 그 전까지 실행한 후 힙 구조를 분석해보자.
이렇게 나오는데 이 부분을 세밀하게 분석해보면
이렇게 된다.
따라서 strcpy 함수를 이용해서 printf의 GOT주소를 winner() 주소로 바꿔주면 될 것이다. (최적화 문제로 여기선 puts함수이다.)
Printf의 got 주소를 알아보면,
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 |