언어/c언어

진행중

파아랑새 2017. 10. 13. 17:54

다음과 같은 코드를 작성한다.  


  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 하고는 다르게 나온다. 



앗 ! 잠깐 몇 까지 테스트를 먼저 한다.

================================== 추후 진행 =====================================================