SH1R0_HACKER
stack 4 본문
stack4.c
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
void win()
{
printf("code flow successfully changed\n");
}
int main(int argc, char **argv)
{
char buffer[64];
gets(buffer);
}
stack3와 비교했을 때 fp만 없어진 코드이다.
fp가 없어도 ret를 사용해 실행흐름을 변경할 수 있다.
[ DEP 우회 RTL 공격기법 (Return To Libc) ]
메모리 보호기법 DEP(Data Execution Protection)란?
데이터 영역에서 코드가 실행되는 것을 막는 기법이다.
BOF의 기본 공격루트는 버퍼에 쉘코드 넣고 쉘코드를 가리키는 주소를 EIP에 overwrite하여 실행시키는 방법이다.
DEP는 이런 공격을 방지한다. DEP가 적용된 바이너리는 스택에 실행 권한이 없어서 쉘코드가 실행되지 않고, 예외처리 되기 때문이다.
RTL (Return To Libc) 공격기법이란?
공유 라이브러리를 이용하는 방법이다.
프로그램 실행 시 적재되고 여러 프로세스에서 공동으로 이용할 수 있는 라이브러리이며
메모리에서 실행 권한이 필수로 설정되어 있다.
공유 라이브러리 함수를 넣어서 공격하게 된다.
참고 url : https://qzqz.tistory.com/368
[ Exploit ]
buffer의 위치 : esp+0x10
buffer와 ret의 거리
ret 명령어에 브레이크포인트를 걸었으니깐 스택 최상단에 존재하는 값이 현재 돌아갈 ret 값이다.