티스토리 뷰
Hackershcool level12 = )
해커스쿨 FTZ 레벨12 [BOF]
Level 12문제도 Level11처럼 hint를 보면 setreuid함수와 gets함수로 문자열을 입력받는 것을 볼 수 있다.
12번 문제도 11번처럼 gdb로 disas main해본 결과 다음과 같았다.
①을 보면 11번 문제와 마찬가지로 스택에 16진수로 108만큼 공간을 할당 해주는 것을 볼 수 있다. 역시 10진수로 바꾸면 264바이트가 된다. 이후는 11번 문제와 같이 264바이트 + ebp 4바이트 = 268바이트를 쓰레기 값으로 채워주고 Return Address를 에그쉘의 주소로 넘겨주면 된다. 따라서 이전과 같이 공격을 해보았다.
공격한 방법이 효과가 없었으며 11번과 달리 gets로 입력받으므로 인자 전달방식을 바꿔야겠다고 생각됬고 | (Pipe)를 사용해봤다.
하지만 쉘을 얻지 못했고 나름대로의 원인과 해결법을 찾아보았다.
① Pipe는 왼쪽의 표준 출력을 오른쪽의 표준입력으로 전달한다.
② 표준입력을 지원하는 명령어인 cat을 Perl문과 같이 사용하기 위해 ‘;’으로 명령어 구분
③ '`'(Back quote)로 묶인 문자열은 명령어로 인식한다.
위 사진에서처럼 공격을 한다면 attackme는 제대로된 표준입력을 받지 못하기 때문에 cat 명령어를 붙여주며 이를 위해 ‘;’를 사용하여 명령어를 나눠준다. 하지만 Back quote로 묶어준다면 ';cat'자체를 명령어로 인식하여 제대로 실행하지 못하기 때문에 ‘()’를 사용하여 하나로 묶어주고 Pipe를 통해 attackme로 넘겨준다.
따라서 제대로 된 코드를 쓰면 다음과 같이 쉘이 떨어지고 Level13의 패스워드를 얻을 수 있다.
'Tech' 카테고리의 다른 글
해커스쿨 Level14 (2104) | 2013.03.29 |
---|---|
해커스쿨 Level13 (403) | 2013.03.28 |
에그쉘 소스(Eggshell code) (780) | 2013.03.26 |
해커스쿨 Level11 (977) | 2013.03.25 |
보호나라 3.20 악성코드 전용 무료 프로그램 (1093) | 2013.03.21 |
- Total
- Today
- Yesterday
- TISTORY
- www
- 티스토리
- 웨일브라우저
- DoH
- 사이버테러
- hackerschool
- 웹
- CODEGATE 2014
- 악성코드
- FTZ
- 프로그래밍
- 자바스크립트
- writeup
- 문제풀이
- 개발
- exploit
- network
- 프로그래밍 언어
- DNSOverHTTPS
- 스크립트
- Sublime Text 2
- CK Exploit Kit
- 파이썬
- CloudFlare
- 분석
- python
- Wargame
- BOF
- 해커스쿨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |