짱짱해커가 되고 싶은 나

[how2heap] fastbin_dup.c 본문

pwnable

[how2heap] fastbin_dup.c

동로시 2020. 2. 19. 16:31

 

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