how2heap house of spirit
링크 <- 출처[shellphish github]
조건
1. 스택에 fake_chunk를 만들 수 있어야 한다.
2. 만든 fake_chunk의 주소를 알아야 한다. 즉 스택주소를 알아야 한다.
3. 힙 포인터를 조작할 수 있어야 한다.
1. malloc를 해준다. (line 9) #malloc(1)을 하게되면 자동으로 fastbin의 최소 size로 할당이 된다.
2. 변수명이 a인 포인터 변수를 하나 선언한다. (line 12)
3. 스택에 fake_chunk 변수를 배열로 선언한다. (line 14) #이 기법은 fake_chunk와 그 청크의 next_size까지 필요하기 때문에 fake_chunk[10]을 사용해서 2개의 fake 청크의 값을 설정하는 것이다.
4. 첫 번째 fake 청크의 사이즈를 0x40으로 설정해준다. (line 20) #free() invalid size 필터링 부분을 우회하기 위해서다.
5. 두 번째 청크 사이즈를 0x1234로 설정한다. (line 24) #free(): invaild size 필터링 부분을 우회하기 위해서다.
6. 아까 선언한 포인터 변수 a에 첫 번째 fake_chunk의 데이터 영역의 주소 값을 넣는다. (line 28)
7. 그리고 a를 free한다. (line 31) #그렇게 되면 첫 번째 fake_chunk가 진짜 청크라고 인식을 해서 free가 되고 fastbin에 첫 번쨰 fake_chunk가 등록된다.
8. 청크를 할당하고 그 청크의 주소를 보면 스택에 할당된 것을 알 수 있다. (line 34)
끗
'Documents > how2heap' 카테고리의 다른 글
how2heap overlapping_chunks2 (0) | 2018.03.19 |
---|---|
how2heap overlapping_chunks (0) | 2018.03.19 |
how2heap house_of_lore (0) | 2018.03.02 |
how2heap house_of_force (0) | 2018.02.20 |
how2heap unsorted_bin_attack (0) | 2018.01.17 |