UAF(Use After Free) 기법은 메모리를 할당 받고 사용한 이후, 해제했을때 데이터가 지워지지 않는다는 점을 이용한 기법이다.
- 즉, a라는 변수에 10을 할당하고 해제한 다음 b라는 변수를 다시 할당하게 된다면 10이라는 값이 그대로 남아있게 된다.
Example
다음 코드와 같이 프로그램이 2개의 메모리를 할당하고, 첫 번째 메모리를 해제한 후 비슷한 크기의 메모리 할당을 요청하면 이전에 해제된 메모리가 할당된다.
- 그리고 c는 a가 할당받은 메모리와 같은 영역의 포인터를 가지게 된다.
- 즉, c가 가지고 있는 포인터를 이용하여 데이터 변경 및 출력, 함수 호출이 가능하다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char* a = malloc(160);
char* b = malloc(256);
char* c;
free(a);
c = malloc(144);
strcpy(a, "Secret message");
}
해당 기법의 이론은 정말 간단하기 때문에 문제를 해결하면서 익히는 것을 추천한다.
- 아래 사이트의 uaf 문제가 UAF 기법을 익히기 좋다고 생각한다.
https://pwnable.kr/play.php
pwnable.kr
참고 사이트
first-fit(Use-After-Free)[Korean] - TechNote - Lazenca.0x0
Excuse the ads! We need some help to keep our site up. List UAF(Use-After-Free) UAF는 이전에 비워진 메모리를 사용하여 유효한 데이터의 손상에서 임의의 코드 실행에 이르기까지 여러 가지 부정적인 결과가 발생
www.lazenca.net
'hacking > pwnable' 카테고리의 다른 글
Return to dl-resolve (0) | 2023.05.31 |
---|---|
Return to csu (1) | 2023.05.28 |
Double Free Bug (0) | 2023.05.28 |
Frame Pointer Overwrite(One-byte Overflow) (0) | 2023.05.28 |
Frame faking(Fake ebp) (0) | 2023.05.28 |