본문 바로가기
  • True knowledge exists in knowing that you know nothing. -Socrates-
Study/ftz

FTZ level11

by intadd 2016. 7. 12.





FTZ (Free Training Zone) level11


 


1. 환경 : window10

2. VM, Red Hat Linux 9.0, putty




id : level11

pw : what!@#$?


ftz 11번 부터는 stack bof문제입니다.

저는 환경변수를 사용 할 것입니다. 왜냐하면 lob에서

인자 값에 쉘코드를 넣는 것이 나오기 때문에 ftz에서는

환경변수를 다루겠습니다. 


1.     Cat hint 를 사용하여 힌트를 확인합니다

 


      


2.     코드를 분석한다.

Attackme 라는 프로그램에 인자를 전달 합니다

캐릭터형  str[256]의 크기는 256

Setreuid 

Strcpy (str,argv[1])); argv[1]의 값을 str에 복사합니다



3.   Strcpy의 글자수를 제한해서 받지못하는 취약점을 이용해봅시다



4.   Gdb를 이용하여 attackme를 확인한다.

         일단 스텍의 총 크기는 0x108 == 264byte 입니다

         그러면 ret를 덮어씌어야 하는데 일단 264바이트를 채우고 그 위에            ebp (4byte)공간을 채우고 바로 위에 있는 ret를 덮어씌워야 합니다.

   


       스텍의 구조

Ret

Ebp공간 (4byte)

나머지 스택 (264byte)  


, ret까지 도달하기 위한 버퍼의 길이 268이다



5.   쉘코드를 실행시키는 환경변수를 만들어줍니다.

(환경변수 만들기 export (이름)=(파이썬사용)


"\x90"은 뒤에아무것도 실행하지 않고 마지막에 있는 쉘코드를 실행합니다. 사용하는 이유는 주솟값의 오차가 있기 때문에 오차를 무시하기 위해서 사용합니다.


 6.   환경변수의 주솟값을 찾아야하므로 주소를 출력해주는 프로그램을 만든다.

(/home/level11에서 만들 수 없으므로 cd /tmp로 이동하여 프로그램을 만들었습니다.)

gcc 를 이용하여 컴파일 한후 프로그램을 실행한다.

   

 

 

7.  Stack 268까지 채우고 쉘코드를 실행하는 환경변수의 주솟값을        넣 어준다. (환경변수의 주솟값 bfffe6f)




'Study > ftz' 카테고리의 다른 글

FTZ level13  (0) 2016.07.12
FTZ level12  (0) 2016.07.12
FTZ level10  (0) 2016.06.23
FTZ level9  (0) 2016.06.22
FTZ level8  (0) 2016.06.22

댓글