Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- package.json
- 백엔드
- 한국정보보호산업협회
- 곱셈 암호
- 한국산업인력공단
- 백엔드입문
- 한국정보보호산업협회기자단
- 덧셈 암호
- function scope
- Writeup
- 개인정보보호교육
- node.js
- 마감임박
- 국가인적자원개발컨소시엄
- package-lock.json
- 확장 유클리드 알고리즘
- pwnable.tw
- 모듈러 연산
- 유클리드_알고리즘
- 포너블
- 웹 프레임워크
- 무료교육
- 가명정보처리
- 호이스팅
- 디오판투스 알고리즘
- arrow function
- 개인정보안전성
- 동적타이핑
- 개인정보보호
- 개인정보보호위원회
Archives
- Today
- Total
짱짱해커가 되고 싶은 나
[how2heap] fastbin_dup_into_stack.c 본문
코드를 보면 a b c를 할당하고 a free -> b free -> a free 순으로 한다.
그러면 free list에는 a->b->a가 저장되어 있다.
d에다가 다시 malloc을 한다. 8byte이기 때문에 fastbin에 있던 a가(예전 a의 주소) 할당된다.
그리고 2번째에 malloc을 다시 하면 b의 주소가 할당된다. 그러면 free list에 남은 주소는 예전 a의 주소만 남아있다.
그런데 다시 a를 할당한다면 d의 주소를 가리키게 되는데 d는 stack이기 때문에 stack영역을 chunk처럼 사용할 수 있게 된다. chunk는 (user data는 최소 16byte + 이전 꺼랑 크기 정보를 포함하고 있어서) + 0x10을 하기 때문에 0x20짜리의 크기를 stack으로 생각한다.
a의 fd주소를 stack 주소로 바꿔본다.
다시 a를 할당하게 되면 fd주소가 스택으로 바뀐다. 근데 이 때 크기가 0x20이기 때문에 free chunk로 인식된다.
그래서 stack주소로 할당된다.
'pwnable' 카테고리의 다른 글
[how2heap] fastbin_dup.c (0) | 2020.02.19 |
---|
Comments