본문 바로가기

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

[2020.04.14] pw.Sly - pwnable.kr의 bof(2)

 

출석 : 모두들 정시출석 perfect, 과제 제출 perfect

학습내용 : pwnable.kr 3번 bof문제 코드 심층분석

 

[pwnable.kr 3번문제]

 

<손슬리>

Q1. 스택은 높은주소에서 낮은 주소로 쌓이는 거 아닌가? overflowme 시작 주소가 ebp-0x2c일 때 왜 위로 자라나지 않고 아래로 자라난다고 많은 write up에서 풀이되어 있는지 모르겠음.

(여기서 왜 1번이 아니고2번인가?)

출처 : 손슬리 필기

A. 수많은 글을 찾아봤으나 정확한 결론이 나지 않음. 높은 주소부터 낮은 주소로 스택이 확장되는것은 맞는것 같음. 자세한 문의는 교수님께 드려봐야 할 듯.

 

Q2. func함수에서 mov eax, gs:0x14부터 3번째 줄까지는 무슨 일을 하는 것인가? 카나리라는 이야기를 듣긴했는데 정확히 모르겠다.

 

A. 카나리(Canary)는 스택오버플로우 및 버퍼오버 플로우에서 지역변수와 돌아갈 주소를 나누는 경계를 나누기 위한 보호기법 중 하나로, 컴파일러가 지원해야하며 스택 프레임 포인터 이전 무작위 값을 삽입하고 값이 오염되었다면 반환하지 않고 종료한다. 하지만 기능상 완벽하지는 못하다.

출처 : 나무위키

출처 :https://m.blog.naver.com/PostView.nhn?blogId=dsz08082&logNo=221320384736&proxyReferer=https:%2F%2Fwww.google.com%2F

https://namu.wiki/w/%EB%B2%84%ED%8D%BC%20%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C/%EC%8A%A4%ED%83%9D

 

Q3. printf나 gets도 함수인데 왜 이에 대한 함수 프롤로그나 에필로그 과정은 어셈블리 상에 표시되어 있지 않은가? 찾아보니까 과정이 있는 것 같긴 한데...

 

A. 있다. func을 뜯어봐서 그런것이지 따로 뜯어보면 각자 프롤로그나 에필로그 과정이 있다.

출처 : https://iplusu.tistory.com/entry/C-printf-%ED%95%A8%EC%88%98%EC%9D%98-%EB%82%B4%EB%B6%80-%EA%B5%AC%EC%A1%B0-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

<다음주 계획>

1. 전체회의 준비

- ppt 제작, 자료 준비

 

'3. Pwnable (포너블) > 1) Write UP' 카테고리의 다른 글

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