상세 컨텐츠

본문 제목

[HITCON-Training] lab3 : ret2sc

SYSTEM HACKING/CTF, etc

by koharin 2019. 8. 10. 12:35

본문

728x90
반응형

1. 보호기법, 파일 유형 확인

 

 

32-bit 파일이며 보호기법 없다. 

 

 

2. IDA로 pseudo code 확인 및 분석

 

 

- read(0, &name, 0x32u) : read 함수로 사용자로부터 딱 50 바이트만 입력받는다.

- gets(&s) : gets 함수로 s 변수에 입력받은 문자열 저장 -> overflow 취약점 발생

 

read 함수는 딱 주어진 50 바이트만 입력받으니 여기로 name 변수에 shellcode를 저장하고,

gets 함수로는 payload를 전달해서 return address에 &name 을 저장하면

ret 명령어로 해당 주소로 리턴 시 쉘코드를 실행할 수 있다.

 

이것이 return to shellcode 기법이다. (ret2sc = RETurn TO ShellCode)

 

 

pseudo code에서 name을 눌러서 &name으로 이동해보면 name 변수의 주소가 0x0404a060임을 알 수 있다.

 

그리고 ebp-14h 로 s 의 크기를 알 수 있다.

ebp-0x14 h = ebp-20 이므로 s의 크기20 바이트이다.

 

 

3. s 에서 return address 까지의 거리

 

 

 

bp 1 : main 함수 첫 번째 명령어 - 최상위 stack 주소 : return address 가짐

bp 2 : gets 함수 호출 명령어 (gets 함수 호출 전) - s 변수 주소 

 

각 bp 에서 구한 주소의 차이로 s 에서 return address 까지 거리를 구할 수 있다.

 

(gdb) p/d 0xffffd5bc - 0xffffd59c

$1 = 32

 

s(20) + dummy(8) + SFP(4) = 32

 

 임을 알 수 있다.

 

따라서 stack 구조는 s(20) + dummy(8) + SFP(4) + RET(4) 이다.

 

 

4. s 시작주소, return address 확인

 

예상대로 0xffffd59c로 출력해보면 딱 값을 넣은 부분에서 시작해서 값이 들어가있다.

0xffffd59c가 시작주소이다.

 

아까 bp 1에서 구한 0xffffd5bc 주소가 return address를 값으로 가지는데, 실제로 출력해보면 return address가 덮어진 것을 확인할 수 있다.

 

 

5. payload

 

 

6. exploit

 

 

728x90
반응형

'SYSTEM HACKING > CTF, etc' 카테고리의 다른 글

[HITCON-Training] lab5 : simplerop  (0) 2019.08.15
[TAMU 2019] pwn2  (0) 2019.08.14
[TAMU 2019] pwn1  (0) 2019.08.14
[TAMU 2018] pwn4  (0) 2019.08.10
[TAMU 2018] pwn3  (0) 2019.08.10

관련글 더보기