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-lock.json
- function scope
- 개인정보보호위원회
- 포너블
- 한국산업인력공단
- 웹 프레임워크
- Writeup
- 백엔드입문
- pwnable.tw
- 한국정보보호산업협회기자단
- 무료교육
- 개인정보안전성
- 백엔드
- node.js
- 덧셈 암호
- 곱셈 암호
- 가명정보처리
- 디오판투스 알고리즘
- package.json
- 마감임박
- 개인정보보호교육
- 한국정보보호산업협회
- 개인정보보호
- arrow function
- 국가인적자원개발컨소시엄
- 유클리드_알고리즘
Archives
- Today
- Total
짱짱해커가 되고 싶은 나
[how2heap] fastbin_dup.c 본문
fastbin_dup.c를 실행시켜보니 다음과 같이 나왔다.
이 코드는 a, b, c를 할당시킨 다음 a를 free하는데 이렇게 되면 a는 fastbin에 들어가게 된다.
그 다음 바로 a를 할 경우 fastbin의 top인 a와 서로 같아 error가 발생하므로 a가 아닌 b를 free하게 된다.
그러면 sing linked list형태인 fastbin은 b -> a로 바뀌게 된다.
이 다음에 한 번 더 a를 free하게 된다면 fastbin에는 a->b->a로 a가 두 번 들어가게 된다.
3번 free 한 다음에 break point를 걸어줬다.
main_arena를 확인해보니 a인 0x602000이 있었다.
(그 저 코드를 돌렸을 때는 a : 0x602010 b : 0x602030 c : 0x602050으로 나왔는데 실제 주소는 0x10씩 적게 나왔다. 아무래도 실제 할당할 때 0x10더해지는 것 때문에 그렇게 되는 것 같다.)
그러면 a -> b -> a인지 확인해보도록 하자.
따단~ fd에 0x602020 즉, b가 들어있다.
그렇다면 b에는 a가 연결되어 있을까~?
빰~ 연겨되어있다!! ㅎㅎ
이렇게 a->b->a로 fastbin에 있기 때문에 다시 할당을 하게 되면
그 주소가 a주소 b주소 a주소가 된다.
즉 같은 주소를 2번 할당받을 수 있게 된다.
'pwnable' 카테고리의 다른 글
[how2heap] fastbin_dup_into_stack.c (0) | 2020.02.20 |
---|
Comments