0407 pw.Sly - 달고나 문서와 이어짐.
[pwnable.kr 3번문제]
<손슬리>
Q1. 박슬리 ppt를 보면 9슬라이드에서 왜 func함수가 시작되는 곳이 ebp-0x2c인가? 그 위에가 printf함수인데 그러면 이미 func이 시작된것이 아닌가? ebp-0x2c가 gets 입력받는 곳이라고 생각하면 (ebp+0x8)-(ebp-0x2c)가 이해되는데 왜 func의 시작지점인지 모르겠다.
A. ppt 오타이다. 함수가 아니라 배열의 시작지점이다. 배열 overflowme의 시작부분이 ebp-0x2c 이다. func 함수의 시작은 0x0000062c이다.
<오슬리>
Q1. gdb로 뜯은 코드에서 char 배열의 시작점은 어디이며, 왜 overflowme의 시작주소가 0x2c인가? printf 이전에 선언하였는데 왜 printf 보다 밑에 있으며 gets의 인자로 입력받는데 gets의 위에 있는가?
A. call이 printf면 그 위에 sub가 공간확보해서 char선언하는것은 아닌가? 스택은 거꾸로 넣으니까? 위에서 아래로 실행되는 것은 맞는 것 같은데? gets 함수 실행할 때 스택프레임에 함수 인자 먼저 넣고 시작하니까?
=> 추가적 공부 필요
<tmi>
- pwnable.kr의 서버는 리틀 엔디안 형식이다.
=> 따라서 문제 답안 입력도 리틀 엔디안 형식으로 맞추는 것
- IDA를 이용하면 좀 더 편리하게 주소를 알아낼 수 있다.
- 윈도우 계산기는 비트 계산도 가능하다.
<다음주 계획>
1. pwnable.kr bof 문제 심층 분석 (코드 분석해오기)
- 구글링 자유롭게 하되, 참고 문헌 잘 정리해오면 좋음.
- https://www.hackerschool.org/Sub_Html/HS_Community/?Type=University&More_Size=-70
15번까지 참고 가능함.
'3. Pwnable (포너블) > 1) Write UP' 카테고리의 다른 글
[2020.04.14] pw.Sly - pwnable.kr의 bof(2) (0) | 2020.04.26 |
---|