출석 : 모두들 정시출석 good
학습내용 : 달고나문서 ~p.27까지 심층공부, pwnable.kr 3번 bof문제 풀이
지난 주 잘 이해하지 못했던 달고나문서를 심층적으로 공부하고, bof 1문제를 풀어보았다.
[달고나문서]
<문슬리>
Q1. 시스템이 리셋되어 초기화되면 플래그 레지스터는 왜 0x00000002의 값을 가지게되는가?
A. 밑의 사진을 잘 보면 1번 비트값이 1임. 나머지가 모두 초기화된다고 하면 2진수로 00000000000000000000000000000010이고, 이는 16진수로 0x00000002이므로 시스템이 초기화되면 플래그 레지스터는 0x00000002의 값을 갖게됨.
Q2. 프로그램 구동에서 -o 옵션은 무슨 옵션인가?
A. 특정 파일명으로 실행 파일을 생성할 때 쓰는 옵션이다.
<박슬리>
- 모르는건 아니고, 달고나문서 보면서 오류를 찾아보았다.
1. 커널주소가 반대로 쓰인 것 같다.
=> 다른 문서들은 모두 Kernel이 high address에 있는데, 달고나는 low address라고 쓰여있음.
2. offset과 logical address의 설명과 예시가 반대로 쓰인 것 같다.
=> 달고나 p.6보면 시작위치가 offset이고 시작 위치로부터의 위치가 logical address라고 되어있는데, offset의 정의를 찾아보면 시작위치로부터의 위치가 offset이라고 되어있다.
3. 범용 레지스터가 4개의 32bit 변수라고 되어있는데, 찾아보면 8개의 32bit 변수이다.
<오슬리>
Q1. 왜 다 4Byte인가?
A. 32비트 운영체제에서 명령을 수행하는 단위(워드)가 4바이트이기 때문이다. (달고나에서 다루는 8086 프로세서는 32비트 프로세서) 추가로, 워드는 프로세서마다 다를 수 있다.
'3. Pwnable (포너블) > 2) 개념 정리' 카테고리의 다른 글
[2020.11.07] 4너블4ever - 달고나 문서 44p~57p (0) | 2020.11.07 |
---|---|
[2020.9.19] 4너블4ever - 리눅스 기초 명령어 + 달고나 문서 ~p12 (0) | 2020.09.20 |
[2020.05.19] pw.Sly - 달고나 문서 p44~p57 (0) | 2020.05.23 |
[2020.05.12] pw.Sly - 달고나 문서 p27~p44 (0) | 2020.05.23 |
[2020.03.31] pw.Sly - 달고나 문서 ~p27 (1) (0) | 2020.04.26 |