offset

2021. 5. 26. 00:35·WriteUP

HackCTF Offset

이번에 풀어볼 문제는 offset문제이다. 해당문제는 대부분 IDA라는 프로그램으로 쉽게 풀 수 있지만 한번 안쓰고 풀어보기로 하였다.

 

일단 해당 프로그램이 어떤 메모리보호기법이 적용되어있는지부터 확인하였다.

음.. 일단 NX가 활성화 되어있다 NX는 스택또는 힙등에서 쉘코드를 사용할 수 없도록 하는 보호 기법이다.

그렇다면 쉘코드를 직접적으로 삽입할 수 없는 거 같다.

 

일단 프로그램을 동작시켜보자

프로그램을 동작시킬 함수를 물어보고? 입력을받도록 되어있다.

일단 gdb로 까보자..

 

main함수

음... select_func함수가 있고 32의 공간을 확보하고 함수 인자값으로 하나를 입력받는 거 같다. 해당 select_func를 확인해보자.

select_func 함수

strncpy함수를 이용해서 31바이트 만큼 ebp-0x2a에 값을 받고 eax에 저장하며,

strnmp함수를 사용하여 입력받은값과 무언가를 비교한다

또한 같지 않을 경우 select_func함수를 이용하여 특정 함수를 호출하는 거 같다 특정함수는

ebp-0xc에 저장되며 85번째 줄에 call eax를 통해 호출 되는듯 하다 여기서 쉘코드가 실행이안되기에

이 프로그램에 시스템함수또는 쉘을 획득하는 함수가 있다면 call부분에 우리가 원하는 함수의 주소를 넣으면 될것 같다.

 

그래서 함수목록을 확인하였더니 수상한 함수가 발견되었다.

 

이 함수는 함수명만봐도 플래그를 출력해줄 거 같다. 

그렇다면 select_func 함수에서 인자값으로 넘어오는 값을 저장하는 부분인 ebp-0x2a에서 버퍼오버플로우를 일으켜

함수가 호출되는 ebp-0xc의 주소값에 print_flag함수의 주소를 넣는다면 print_flag함수가 호출되면서 플래그를 보여줄 거 같다. 일단 각각의 주소값을 구해보자.

30byte 만큼의 거리차이가 있다. 그럼 우리는 call에 우리가 원하는 주소값을 넣기 위해서 1byte만큼 버퍼오버플로우를 일으킬 수 있다...!

이제 함수의 주소값을 보자

오호 call에 호출되는 값과 1바이트가 차이가 난다 그렇다면

우리가 짜야할 익스코드에서 페이로드는

dummy(30)+\xd8 이다!

(call함수에서 호출되는 0xc의 주소값이 0x56555600 이고 print_flag의 주소값이 0x565556d8이기 때문에 1byte가 차이)

그럼 이제 모든 준비는 끝났으니 익스코드를 짜러가보자!!!

공격 코드

해당 코드는 이렇게 짰다 더미값을 30바이트를 주고 오버플로우를위한1바이트를 주소값에맞게 대입 후

recvunril을 사용하여 ?문자가 나올때까지 문자를 받고

그 후 해당 페이로드를 전송시키도록 하였다

성공

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

 

EX) 해당 문제는 IDA라는 프로그램을 쓰면 쉽게 풀 수 있지만 지금 내실력으로 그런방법으로 풀어버리면 실력이 늘지 않을 거 같아 쓰지않고 풀어봤다.. 너무어렵다.. 살짝 코드를 힐끗 보기는 했지만..그래도 직접 풀때는 보지않고 이해하며 어셈블리어코드를 보며 이해하며 풀어보았다.. IDA를 쓰는게 맞는건가

'WriteUP' 카테고리의 다른 글

rtl_core  (0) 2021.07.21
rtl_world  (1) 2021.05.28
Simple_overflow_bof_ver_2  (0) 2021.05.21
Simple_size_bof  (0) 2021.05.21
64bof_basic  (0) 2021.05.21
'WriteUP' 카테고리의 다른 글
  • rtl_core
  • rtl_world
  • Simple_overflow_bof_ver_2
  • Simple_size_bof
g2h
g2h
  • g2h
    감자 텃밭
    g2h
  • 전체
    오늘
    어제
    • 분류 전체보기 (138) N
      • Network (4)
      • Web (25) N
        • Web Hacking Techniques (25) N
      • 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g2h
offset
상단으로

티스토리툴바