fake chunk 만들 시 PREV_SIZE 와 SIZE값이 과연 무엇을 의미 하는지 이제 약간 감이 잡히는 듯 ? 물론 커널버전마다 약간씩 달라질 것 같긴 한데. 일단 써본다.
exploit-exercises 에서 protostar heap3번 문제가 double free bug 관련 문제다. 이 때, fake chunk를 구성 하는데 만약 [chunk 1 ][chunk 2 ] 이런식으로 되어 있고 여기서 fake chunk를 구성 할 때, 보통 [A * chunk 1 크기][0xfffffc][0xffffffff][fake fd][fake bk] 이런 식으로 페이로드를 구성한다. 근데 이 때 앞의 PREV_SIZE(0xfffffffc) 부분은 fd와 bk의 부분의 오프셋값을 결정하고 size값은 말 그대로 PREV_SUS의 값으로 써 0의 값을 가지는 음수가 위치하게 된다.
따라서 이 문제에서 답을 얻기 위한 페이로드는 [A * chunk 1 크기][0xfffffc][0xfffffffc]+[AAAA]+[fake fd][fake bk] 이런식으로 A가 dummy 로 들어가는게 핵심인듯.
'Exploit' 카테고리의 다른 글
메타스플로잇을 이용한 쉘코드 작성 (0) | 2014.10.03 |
---|---|
스택 보호기법 (2) | 2014.09.22 |
RTL을 이용한 쉘코드 작성 (3) | 2014.08.02 |
유니코드 익스플로잇 (0) | 2014.07.21 |
SEH overwrite 실습 (0) | 2014.07.16 |