[HackCTF] Poet

2021. 8. 9. 20:06·WriteUP

이번에 풀어볼 문제는 Hackctf에 Poet 문제 일단 해당 문제를 실행시켜 보았다.

해당 프로그램을 실행시키니 시인과 저자를 찾는? 프로그램인 거 같다 계속해서 입력을 받도록 되어 있는 거 같다.

해당 프로그램에 적용되어 있는 메모리 보호기법을 확인해보았다.

NX가 걸려있어 쉘코드는 실행이 되지 않을 것이다.

일단 IDA를 통해 상세한 분석을 해보았다.

IDA를 통해 확인하였을 때는 while문을 통해 계속 돌다 dword_6024E0의 값이 1000000과 동일하면 break를 통해 반복문이 종료되며 reward함수를 호출한다.

 

dword_6024E0은 bss영역에 존재하고 있다

 

reward함수를 확인해보면 flag를 던져주는 거 같다.

또한 이 외에 3개의 함수가 더 존재하는데 하나하나 확인해보았다.

먼저 get_poem함수를 보면 입력을 받을 수 있도록 gets를 통해 poem에 입력을 받는다 여기서 bof가 일어날 수 있다 

하지만 여기서 중요한 것!!!

※ gets로 입력받은 후 우리가 변조시켜야 할 dword_6024E0 값을 을 초기화시킨다 그렇다는 건 이 함수에서는 bof를 일으켜도 값을 변조할 수 없다

그 후 get_author 함수를 보면 여기서도 gets를 통해 입력받을 수 있다 여기서 bof를 일으키면 될 거 같다

poem과 unk_6024 A0 둘 다 변조시켜야 할 값과 같은 bss영역에 존재하므로 bof를 통해 dword_6024E0의 값을 변경하면 된다는 것이 확실해 져싿

마지막 함수를 확인해보면

첫 번째 poem에 입력한 값을 통해 해당 if문에 있는 문자열과 일치할 경우 dword_6024E0에 값이 100씩 증가하는 거 같다.

그럼 이제 해야 하는 것은 unk_6024 A0로부터 dword_6024E0까지의 거리 값을 구하기만 하면 된다

이 값은 IDA로도 확인이 가능하고 gdb를 통해서도 확인이 가능하다.

 

먼저 gdb를 통해 확인해보면

85번째 줄을 보면 우리가 if에서 비교해야 할 eax에 들어갈 값을 표시해준다  0x6024e0인 거 같다

그 후 우리가 입력할 get_author함수에서 입력받는 값의 위치는

0x6024a 0이며 이 둘을 빼면

0x40이 나온다 즉 거리 차이는 10진수로 64만큼의 거리가 나온다.

IDA로 확인을 해보면

bss영역에서의 두 변수 간의 거리 차이도 0x40 즉 64만큼의 거리가 나온다.

그럼 이제 64만큼의 더미 값을 채운 후 dword_6024E0의 값을 1000000으로 바꿔주면 된다.

해당 코드는 아래와 같이 작성했다

두 번째 함수인 author에서 bof를 일으키기 위해

첫 번째 입력받는 부분에서 임의의 값을 보낸 후 그 후 페이로드를 보내 공격하도록 작성하였다

그 결과

성공적으로 공격하여 플래그를 획득하였다!!! 

이번 문제는 ret에서 변조가 아닌 bss영역에 특정 변수 간의 거리를 확인 후 특정 변수의 값을 변조하는 문제였다

나름 재밌었다.

'WriteUP' 카테고리의 다른 글

[HackCTF] random  (0) 2021.08.09
[HackCTF] 1996  (0) 2021.08.09
g++ pwn  (0) 2021.07.23
basic_exploitation_001  (0) 2021.07.22
basic_exploitation_000  (0) 2021.07.22
'WriteUP' 카테고리의 다른 글
  • [HackCTF] random
  • [HackCTF] 1996
  • g++ pwn
  • basic_exploitation_001
g2h
g2h
  • g2h
    감자 텃밭
    g2h
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • Network (4)
      • Web (25)
        • Web Hacking Techniques (25)
      • 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    load of sqlinjection
    Los
    XSS
    dom based xss
    침투테스트
    vulnability
    메타스플로잇
    취약점 스캔
    root권한
    해킹
    암호해독
    해킹툴
    스캔
    Reflected XSS
    SQL Injection
    Hacking
    시스템 해킹
    권한상승
    모의해킹
    스캐닝
    해킹도구
    Metasploit
    web hacking
    sql
    skt 해킹
    CTF
    Kioptrix
    취약점
    내부침투
    cross side script
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g2h
[HackCTF] Poet
상단으로

티스토리툴바