Return-2-Libc 공격 시나리오 작성

yeong-min·2023년 12월 26일
1

버퍼 오버플로우 취약점이 있는 프로그램

#include <stdio.h>

void fun_a() {
	char buffer[60];
    scanf("%s", buffer);
}

int main() {
	fun_a();
    
    return 0;
}

Return-2-Libc 공격 시나리오


실습 함수는 인자가 없는 함수로 진행하였습니다. getuid(), rand(), time()을 사용했으며 gdb를 이용하여 print해달라는 p명령어를 통하여 주소를 알아냈습니다.

공격에 사용한 입력
“A”*60 + “B”*4 + “\x80\xdc\xcd\xf” + “\x60\xb3\xc3\xf7” + “\x50\xaa\xcc\xf7”
⚫ 버퍼에 들어가는 A 60개
⚫ Saved ebp에 들어가는 B 4개
⚫ getuid() 주소를 리틀엔디안으로 치환 = \x80\xdc\xcd\xf
⚫ rand() 주소를 리틀엔디안으로 치환 = \x60\xb3\xc3\xf7
⚫ time() 주소를 리틀엔디안으로 치환 = \x50\xaa\xcc\xf7


공격 전과 후의 스택 구성도입니다.

0개의 댓글