출석 : 모두들 정시출석 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://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을 뜯어봐서 그런것이지 따로 뜯어보면 각자 프롤로그나 에필로그 과정이 있다.
<다음주 계획>
1. 전체회의 준비
- ppt 제작, 자료 준비
'3. Pwnable (포너블) > 1) Write UP' 카테고리의 다른 글
[2020.04.07] pw.Sly - pwnable.kr의 bof(1) (0) | 2020.04.26 |
---|