jam 블로그

[bof 원정대] assassin -> zombie_assassin (FEBP;fake ebp) 본문

해킹/시스템

[bof 원정대] assassin -> zombie_assassin (FEBP;fake ebp)

kid1412 2012. 3. 27. 17:47
728x90
다음 문제의 소스를 보자.

 [그림 1] zombie_assassin.c

소스분석
1. buffer의 크기는 40
2. 인자값은 적어도 하나이상
3. 첫번째 인자값의 48번째 값이 \xbf,\x40이면 안됨.
4. 첫번째 인자값의 길이 48 만큼 buffer에 복사함. 

 
공격하기 위한 과정입니다.

0. bash2
1. system, exit, /bin/sh, leave, buffer의 주소값 구하기
2. bof 공격 

 
1. system, exit, /bin/sh, leave, buffer의 주소값 구하기

 [그림 2] system, exit의 주소값

 [그림 3] leave의 주소값
  
 [그림 4] /bin/sh의 주소값
 
 [그림 5] buffer의 주소값

 
2. bof 공격

fake ebp에 대해서 알아보자.
 sfp overflow와 같이 sfp 를 속여서, 메모리의 다른 부분을 프로그램의 일부분 처럼 실행하게 하는 트릭이다. 형태는 다음과 같습니다.

[main_buf_24 bytes] [fake_ebp0] [leave-ret] [no args]

[fake_ebp1] [func1] [leave-ret] [no args]    

[fake_ebp2] [func2] [leave-ret] [no args]

[fake_ebp3] [func3] [leave-ret] [no args] 

따라서 우리는 다음과 같이 넣으면 됩니다.
[main buffer                   24 bytes] [fake      ebp ] [leave-ret]
["AAAA","system","exit","/bin/sh" ] [buffer 주소값] [leave-ret]
 


 
Comments