일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CTF
- 메타스플로잇
- 취약점
- Hacking
- Los
- 취약점분석
- 칼리리눅스
- 해킹도구
- SQLINJECTION
- 취약점 스캔
- 시스템 해킹
- sql
- SQL Injection
- 모의해킹
- Samba
- 내부침투
- 해킹
- 스캔
- 해킹툴
- 침투테스트
- load of sqlinjection
- 암호해독
- Kioptrix
- web hacking
- 권한상승
- Metasploit
- 스캐닝
- root권한
- 포트스캔
- smb
- Today
- Total
감자 텃밭
offset 본문
HackCTF Offset
이번에 풀어볼 문제는 offset문제이다. 해당문제는 대부분 IDA라는 프로그램으로 쉽게 풀 수 있지만 한번 안쓰고 풀어보기로 하였다.
일단 해당 프로그램이 어떤 메모리보호기법이 적용되어있는지부터 확인하였다.
음.. 일단 NX가 활성화 되어있다 NX는 스택또는 힙등에서 쉘코드를 사용할 수 없도록 하는 보호 기법이다.
그렇다면 쉘코드를 직접적으로 삽입할 수 없는 거 같다.
일단 프로그램을 동작시켜보자
프로그램을 동작시킬 함수를 물어보고? 입력을받도록 되어있다.
일단 gdb로 까보자..
음... select_func함수가 있고 32의 공간을 확보하고 함수 인자값으로 하나를 입력받는 거 같다. 해당 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를 쓰는게 맞는건가
'my_study > HackCTF' 카테고리의 다른 글
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 |