본문 바로가기

3. Pwnable (포너블)/1) Write UP

[2020.04.07] pw.Sly - pwnable.kr의 bof(1)

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