how2heap house_of_force
링크 <- 출처[shellphish github]
조건
1. 탑 청크의 사이즈를 조작할 수 있어야 한다.
2. 청크 사이즈를 원하는 만큼 설정할 수 있어야 한다.
1. 청크를 하나 할당한다.
2. 할당한 후에 GDB로 Heap 영역을 보면 top chunk 사이즈가 나온다. (house of force가 되려면 무조건 이 탑청크 사이즈를 조작할 수 있어야 한다.) 이 사이즈를 이제 -1로 변경한다 (-1은 hex로 가장 큰 값이 0xffffffff로 나온다.)
####첫 번쨰 청크 할당 후에 존재하던 top_chunk의 위치에는 나중에 두 번째 청크가 위치하게 된다.####(밑에 사진확인)
top chunk주목 0x20ef1
미르띤;; 0x20ef1이 청크 사이즈로 바뀜
3. 이제 내가 할당하고자 하는 주소에서 32bit에서는 0x8 64bit 에서는 0x10을 빼주고 탑 청크의 주소를 빼준다. (0x8 or 0x16을 빼는 이유는 청크의 헤더부분을 빼야하기 때문이고 탑 청크의 주소를 빼주는 이유는 위의 말처럼 나중에 두번째 청크를 할당하면 탑 청크가 있던 주소는 두번째 청크의 주소가 자리잡아서 세번째 청크와의 오프셋을 구해야하기 때문이다. )
&두번째 청크+ size +(0x8 or 0x10) = &세번째 청크 <- 그래서 두번째 청크주소를 할당한 다음에 그 뒤에 오는 세번째 청크가 내가 원하는 주소가 되는 원리 ,값이 바로 들어가기 위해 청크의 헤더부분(0x8 or 0x10) 만큼 뺀다.
4. 뺀 값을 구하면 그 주소를 사이즈로하는 청크를 만든다. 그러면 top chunk가 있던 주소로 할당이 되니까 아까 구한 값이 맞아 떨어지면서 다음에 할당될 떄는 원하는 주소로 할당이 될 것이다.
이 글은 공부한 게 갑자기 기억이 안나면 복습용으로 보는거라 처음 공부하는 사람이 이걸 본다면 꼭 다른 사람들이 GDB를 이용해서 정리해놓은 걸 봤으면 좋겠다.
왜냐하면 gdb로 보는 게 더 공부가 잘 된다. ㅎ
#설명을 너무 못한다 ㅎㅋ;;
'Documents > how2heap' 카테고리의 다른 글
how2heap house of spirit (0) | 2018.03.03 |
---|---|
how2heap house_of_lore (0) | 2018.03.02 |
how2heap unsorted_bin_attack (0) | 2018.01.17 |
how2heap poison_null_byte (0) | 2018.01.16 |
house_of_einherjar (0) | 2018.01.15 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.