[프로토스타] protostar - heap0

2021. 8. 10. 10:59·WriteUP

이번에는 프로토스타에 heap0문제를 풀어보았다

힙에 대한 기본적인 지식을 요구하기에 heap에 대해 잘 몰랐지만 생각보다 재밌었던 문제이다.

기본적인 heap overflow문제인것 같았다.

일단 해당 프로그램의 소스코드를 보면

heap0.c

data와 fp 구조체를 선언하고 d와 p에 각각 data와 fp의 포인터를 선언한다 그 후 malloc를 통해 동적으로 메모리를 할당시킨다. 그 외에 winner와 nowinner라는 문자열을 출력해주는 함수가 있고 f->fp를 통해 nowinner함수를 fp구조체에 할당해주는 거 같다. 그 후 strcpy함수를 통해 d->name 즉 구조체 포인터 d에 argcv [1]의 값을 복사한다. 

이 부분에서 bof 가 일어나는 듯하다. 그 후 fp구조체의 fp함수 포인터의 함수를 출력시킨다.

우리는 여기서 nowinner 함수가 아닌 winner함수를 출력해야 한다.

 

bof를 일으켜 fp의 함수 주소를 바꾸면 된다고 생각될 수 있겠지만 그러기 위해서는 heap의 구조를 알아야 한다

힙은 헤더인 4byte(type)+4byte(size)와 +data로 구성되어 있으며 포인터로 잡고 있을 때 가리키는 값은 헤더가 아닌

데이터 부분을 가리키고 있다.

 

일단 천천히 접근해보았다.

첫 번째 메모리 할당 부분인

16번 줄을 실행시키고 21번째 줄에 breakpoint를 잡은 후 확인해 보았다.

eax의 주소가 0x804a 1a 0이기에 제대로 되었는지 확인했다.

제대로 찾은 거 같다 저 주소 값에서 -8을 한 이유는 앞에서 말했듯이 데이터 앞부분에 총 8바이트만큼의 헤더 값이 붙으며 데이터의 입력받아 저장하는  부분을 가르 키기기 때문에 헤더부터 모두 확인하려면 -8한 위치를 확인하면 된다.

 

이제 입력값이 제대로 들어가는지 확인해 보자.

입력을 받을 수 있도록 102번을 실행한 후 인 107 부분에 breakpoint를 잡고 특정값을 입력 후 확인해 보았다.

eax값을 확인하고 정상적으로 AAAA가 들어갔다 

제대로 들어간 거 같다.

A의 아스키코드값은 41414141이 들어갔고 그 뒤에를 보면 6번째 줄에 11은 fp구조체의 사이즈이다 그 후 나오는 것이

nowinner함수의 주소로 추측되어 확인해보았다.

예상과 같이 nowinner함수의 주소였다 그럼 우린 이 부분의 주소를  winner함수의 주소로 변조시키면 된다.

winner함수의 주소를 구해보았다.

그렇다면 이제 모든 건 다 구해졌다

우리가 입력받는 값부터 변조시키는 값까지의 거리를 계산해보면 80의 거리가 나온다

그럼 80개의 더미 값을 채운 후 winner의 주소를 넣으면 성공할 것이다.

성공!!!

heap에 대한 지식이 별로 없어 이해하더라도 설명하기에 많이 부족한 부분이 많았다. 

좀 더 공부를 해야겠다.

'WriteUP' 카테고리의 다른 글

[HackCTF] Beginner_Heap  (0) 2021.08.10
[프로토스타] prostar - heap1  (0) 2021.08.10
[HackCTF] random  (0) 2021.08.09
[HackCTF] 1996  (0) 2021.08.09
[HackCTF] Poet  (0) 2021.08.09
'WriteUP' 카테고리의 다른 글
  • [HackCTF] Beginner_Heap
  • [프로토스타] prostar - heap1
  • [HackCTF] random
  • [HackCTF] 1996
g2h
g2h
  • g2h
    감자 텃밭
    g2h
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • Network (4)
      • Web (31)
        • Web Hacking Techniques (31)
      • System (32)
        • Tips (11)
        • System Hacking Techniques (21)
      • Pentest (14)
        • Pentest (14)
      • WriteUP (47)
        • sec (0)
      • 도구|Tools (12)
      • Security Issue (3)
      • 1-Day-Analysis (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    내부침투
    Hacking
    SQL Injection
    해킹툴
    Encoding
    vulnability
    web hacking
    해킹
    Los
    침투테스트
    NOSQL
    취약점 스캔
    스캐닝
    취약점
    Metasploit
    skt 해킹
    sql
    XSS
    해킹도구
    Kioptrix
    CTF
    권한상승
    load of sqlinjection
    DoM
    스캔
    모의해킹
    dom based xss
    nosql injection
    Reflected XSS
    cross side script
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g2h
[프로토스타] protostar - heap0
상단으로

티스토리툴바