jam 블로그

[bof 원정대] orge -> troll (check argc, argv hunter) 본문

해킹/시스템

[bof 원정대] orge -> troll (check argc, argv hunter)

kid1412 2012. 3. 20. 18:56
728x90
다음 문제의 소스이다.

 [그림 1] troll.c

소스분석
1. buffer의 크기는 40
2. 환경변수 초기화
3. 첫번째 인자값의 48번째의 값은 \xbf 이여야함.
4. 첫번째 인자값의 길이는 48보다 크면 안됨.
5. buffer 초기화
6. 첫번째 인자값 초기화 

 
우리가 풀어야할 과정이다.

이 문제 풀 방법이 2가지 이상이다. 하나는 심볼릭 링크로 푸는것과 또다른 하나는 execl 함수 사용인데. 
심볼릭 링크 관련 문제풀이의 대한 감이 안잡혀서 execl 함수를 사용하여 문제를 풀겠다.

0. bash2
1. argv[0]에 shellcode 넣기
2. argv[0] 주소값 찾기
3. bof 공격 

 
1. argv[0]에 shellcode 넣기

앞에서의 공격방식은 argv[1] 넣었지만 지금은 초기화가 되기 때문에 argv[0]에 넣어서 공격해봅시다.
 

 [그림 2] test.c

execl 함수는 다음과 같다.
execl(파일명,0번째 인자값, 첫번째 인자값,......,null) 

 
2. argv[0] 주소값 찾기

먼저 소스 복사해서 argv[0] 주소값을 구하자

 [그림 3] troll1.c 

dumpcode 함수는 ohara님께서 만드신 헤더파일입니다.
 
 [그림 4] dumpcode.h 
 
 [그림 5] troll1을 실행시켜서 argv[0] 주소값

위에서 test.c에서 troll를 소스 복사한 파일명을 바꾸어주고 위처럼 실행하면 argv[0]에 shellcode 들어간 주소값을 얻을 수 있다.


3. bof 공격

 [그림 6] bof 공격

주소값은 약간 변경 될 수 있습니다. 


Comments