티스토리 뷰
level3의 hint를 보겠습니다. autodig라는 소스를 보여주네요.
추가적인 힌트로는 '동시에 여러명령어를 사용하려면?', '문자열 형태로 명령어를 전달하려면?'
find로 user값이 level4로된 파일을 찾아보면, /bin/autodig가 출력됩니다.
autodig의 소스를 보니까 dig를 이용해서 ip를 입력하면 bind 버전을 알아오라는 것 같네요.
http://suspected.tistory.com/entry/nslookup-dig dig에 대해서 정리한 글. 참고 하세요.
/bin/autodig에 어떤 임의의 사이트 서버 ip 192.168.111.2를 뒤에 붙여 주겠습니다.
위의 argv[0]값에 /bin/autodig 대신에 dig 명령어를 넣어서 'dig @192.168.111.2 version.bind chaos txt'를 실행해줘도 위의 사진과 같이 똑같은 결과를 출력합니다.
gdb로 한번 /bin/autodig를 리버싱 해보겠습니다. gdb로 하는게 익숙치 않았는데, 점점 하다보니 올리디버거로 보는 것과 다르게 쏠쏠한 재미가 있네요!
전체적인 기능 요약.
1. 먼저 "dig @"라는 문자열을 cmd 배열에 넣습니다.
2. "dig @" 문자열 뒤에 autodig 명령어 다음에 입력된 문자열을 붙입니다.
3. "dig @입력받은 문자열" 뒤에 " version.bind chaos txt"라는 문자열을 붙입니다.
예를 들어 192.168.111.2 같은 IP 주소를 입력하면 "dig @192.168.111.2 version.bind chaos txt"라는 명령어 문자열이 조합.
즉, autodig 명령은 결국 입력받은 문자열에 해당하는 DNS 서버에서 운영중인 BIND 프로그램의 버전을 확인하는 명령을 실행 합니다.
이는 해당 서버에서 취약한 버전을 운영 중인지 확인할 수 있는 유용한 명령어 입니다.
*이번 레벨에서는 system() 함수에 여러 개의 명령을 실행할 수 있게 문자열을 전달하는 방법을 이해하고 직접 그렇게 할 수 있어야 합니다.
위에 소스를 보면 if(argc!=2)면 exit(0)을 시켜버립니다.
즉, 예를 들어서 /bin/autodig 192.168.111.2 suspected.tistory.com 이런 식으로 2개의 인자 값을 그대로 주게 된다면 exit(0)을 시켜버립니다. 그럼 어떻게 접근해야 할까요.
바로 "(쌍 따옴표)를 써주면 됩니다. system() 함수는 " "를 쓰면 연속으로 인자 값을 붙여서 쓸 수가 있습니다. /bin/autodig "192.168.111.2 suspected.tistory.com" 이런 식으로 실행을 하면 결과 값이 좌~르르륵 출력 됩니다.
이렇게 전달된 인자는 당연히 내부적으로 문자열 조합 과정을 거치면서 다음과 같이 실행됩니다.
dig @192.168.111.2 suspected.tistory.com version.bind chaos txt
여기서 또 한가지를 말하자면, suspected.tistory.com과 같은 dig 명령어의 입력값을 전달하는 것이 아니라 유닉스 계열 서버에서 실제로 실행될 수 있는 명령어를 연속해서 전달하려면 ";"(세미콜론)을 이용하면 됩니다. ";"은 셸에서 명령어를 한 줄에 연속해서 적을 때 이용할 수 있으며, 이는 system() 함수에도 동일하게 적용됩니다. 이를 셸에서 직접 해보겠습니다.
이와 같이 ';' 뒤에 id 명령어를 실행하면 level4 계정의 id값을 볼 수가 있습니다. 이제 바로 뒤에 ';'값을 주고 패스워드를 알아 보겠습니다.
패스워드만 알았을 뿐, level4로 접속은 하지 못했다. 그렇다면 어떤 명령어를 또 줘야 하는가? 바로 'sh'이다.
보다시피, autodig가 실행되는 순간에 level4의 권한으로 셸이 실행되면서 level4의 권한이 유지된 모습을 볼 수 있다.
'시스템해킹 > FTZ' 카테고리의 다른 글
FTZ LEVEL6 문제풀이(시스템 인터럽트) (0) | 2015.07.21 |
---|---|
FTZ LEVEL5 문제풀이(Race condition) (0) | 2015.07.20 |
FTZ LEVEL4 문제풀이 (0) | 2015.07.18 |
FTZ LEVEL2 문제풀이 (0) | 2015.07.15 |
FTZ LEVEL1 문제풀이 (0) | 2015.07.14 |
- Total
- Today
- Yesterday
- .wll
- Kimsuky
- Decoding
- Bisonal
- idapython
- MS-Office
- Static Analysis Engine
- 한글악성코드
- Flybits
- koodous
- 스피어피싱
- vuln
- 출처 : Do it 안드로이드 프로그래밍
- 위협정보공유
- AMSI
- CVE-2018-9375
- VirusBulletin
- keylogger
- 비트코인
- 멋쟁이사자처럼 4기
- Cisco Talos
- 악성코드
- infostealer
- CVE-2018-0798
- cuckoo-sandbox
- malware
- 해킹메일
- Yara
- Servey
- us-cert
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |