LAB 5 - 미완성

728x90

Mitigation

 

Code

 

RTL 관련 문제이다.

RTL이란 Return-To-Library의 약자로, NX bit가 걸려 있을때(메모리나 스택에 쉘코드를 올려도 실행이 되지 않음) NX bit을 우회하기 위해 고안된 방법이다.

이 방법은 libc내에 있는 system함수나 execve함수등을 이용하여 직접적으로 쉘을 실행시킬 수 있다.

이를 위해서는 Gadget이 필요함.

중간의 strtol 함수는

long strtol(const char *restrict str, char **endptr, int base);

의 형태이고, char * str = 정수로 변환할 문자열, char **endptr은 숫자로 변경하지 못하는 문자열의 시작 위치, int base는 문자열이 가지고 있는 숫자의 진수 (2~32)을 의미한다.

strtol 함수의 반환 값은 10진수 long형 정수 값을 반환한다.

소스코드의 로직

  1. read함수를 통해 문자열을 입력 받는다.
  2. strtol함수를 통해, 문자열을 10진수 long형 정수 값으로 변환후 addr변수에 저장
  3. See_something함수에 addr을 인자로 넣고, 주소를 출력
  4. read함수를 통해 message를 입력 받고, Print_message 함수의 인자로 전달
  5. 이때 strcpy함수에서 취약점이 터진다 → buf는 48byte이지만 mesg의 길이를 검증하지 않기 때문
728x90

'Hitcon Training' 카테고리의 다른 글

LAB 14(Unsorted bin Attack)  (0) 2021.07.25
LAB 12(Fastbin attack)  (0) 2021.07.25
LAB 5  (0) 2021.07.25
LAB 3  (0) 2021.07.25
Lab 1  (0) 2021.07.25