진행중
다음과 같은 코드를 작성한다.
1 # include <stdio.h>
2 # include <string.h>
3 void f()
4 {
5 printf ("buffer overflow success ... !!! \n");
6 } // end of f function
7
8 int main(void)
9 {
10 char sData[12] = {0, };
gets(sData); // <- gets 함수는 경계 검사를 하지 않는 취약한 함수다.
11 return 0;
12 } // gcc -fno-stack-protector -mpreferred-stack-boundary=2 -g -o s s.c
[gets 함수]
우리는 overflow 를 발생시켜 f 함수를 호출 시킬 것이다.
// [stack 가드 해제]
[1] -fno-stack-protector
[2] -mpreferred-stack-boundary=2
// ASLR (Address space layout randomization) 해제
(* 반드시 root 사용자로 바꾸어서 실행해라 안 그럼 permission deny)
# echo 0 >> /proc/sys/kernel/randomize_va_space
==================================================================================================
gcc -fno-stack-protector -mpreferred-stack-boundary=2 -g -o Buff Buff.c 한후
# echo 0 >> /proc/sys/kernel/randomize_va_space
그리고 gdb Buff 그럼 다음과 같은 화면이 나올 것 이다.
사실 peda를 설치한 뒤이기 때문에 일반적인 gdb 하고는 다르게 나온다.
앗 ! 잠깐 몇 까지 테스트를 먼저 한다.
================================== 추후 진행 =====================================================