Type Confusion이란?
type confusion은 프로그램에서 사용하는 변수나 객체를 선언 혹은 초기화 되었을 때와 다른 타입으로 사용할 때 발생하는 취약점이다.
해당 취약점이 존재한다면 memory corruption이 유발되어 공격자가 프로그램을 공격하는 것이 가능해질 수 있다.
예제
#include <stdio.h>
int main(){
int a;
scanf("%d", &a);
puts(a);
}
해당 코드는 정수를 입력받아 해당 값을 출력해주는 코드이다. 하지만 puts함수는 char * 형 포인터를 인자로 받는다. 그래서 type confusion이 발생하여 존재하지 않는 메모리를 참조해서 비정상 종료된다.
'포너블 > Stack' 카테고리의 다른 글
__environ을 이용한 스택 주소 leak (1) | 2023.10.23 |
---|---|
stack pivot (1) | 2023.10.23 |
race condition (0) | 2023.10.23 |
out of bound (0) | 2023.10.23 |
format string bug (1) | 2023.10.23 |