짱짱해커가 되고 싶은 나

[how2heap] fastbin_dup_into_stack.c 본문

pwnable

[how2heap] fastbin_dup_into_stack.c

동로시 2020. 2. 20. 16:22

코드를 보면 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