level3
# 코딩을 보면 인자가 1개가 아니면 에러를 출력하고 프로그램을 종료(exit(0))한다.
- argc는 명령어를 포함하기 때문에 인자는 하나라는 뜻이 된다.
# "dig @argv[1] version.bind chaos txt"의 문자열이 명령어로써, system에 의해 실행된다.
# 파일 명이 제시 돼있으니, find / -name autodig 2> dev/null로도 찾을 수 있다.
# 동시에 여러 명령어를 사용하려면 ; 를 사용하면 된다.
# 문자열 형태로 명령어를 전달하려면 " "를 사용하면 된다.
# 먼저, nslookup과 dig에 대해 간단하게 알아보자.
1). nslookup
- 도메인 서버의 IP 주소를 확인하는 프로그램으로, 원도우 운영체제에도 있다.
- 사용법 : nslookup <IP를 알고 싶은 도메인 주소>
# 해당 주소가 2개가 나오는 것을 확인할 수 있다.
2). dig
- nslookup과 동일하게 도메인의 IP주소를 확인하는 프로그램이다.
- nslookup보다는 좀 더 상세한 정보가 포함돼 있다.
- 명령어 : dig "@쿼리할 DNS 서버의 IP" 도메인주소
▶ 분석 결과 확인
#/bin/autodig 168.126.63.1
# dig @168.126.63.1 version.bind chaos txt
# 둘의 결과가 같음을 알 수 있다.
▶ more hints로 문제 해결
- 동시에 여러 명령어를 사용하려면? --> ;
- 문자열 형태로 명령어를 전달하려면? --> " "
# 문자열 형태로 명령어를 전달했다. 쌍따옴표를 이용해 인자값 2개를 하나로 묶어줌으로써 /bin/autodig 프로그램에 하나의 인자를 전달한 것처럼 할 수 있다.
# dig @168.126.63.1 www.naver.com version.bind chaos txt 와 동일하게 적용된다.
# 실행 결과를 보면 www.naver.com에 대한 질의 결과도 있고, KT서버(168.126.63.1)에 대한 BIND 버젼 조회 결과도 있다.
이제, ; 를 이용해서 동시에 명령어를 전달해 보자.
# /bin/autodig "168.126.63.1 www.naver.com;/bin/bash;"가 내부적으로 어떻게 작동하는지 생각해 보자.
1). dig @168.126.63.1 www.naver.com; 여기까지 실행됨으로써 www.naver.com의 ip주소를 구한다.
2). /bin/bash; 를 실행 한다.
- 여기서 문제는 해결 된다
3). version.bind chaos txt;를 실행한다.
# 1번과 2번은 실행이 되지만, 독립적인 version.bind의 명령어는 없기 때문에 배쉬 쉘이 끝나고 명령어를 찾을 수 없다는 에러 메세지가 출력된다.
'FTZ. System Hacking' 카테고리의 다른 글
level6 - 시그널 (0) | 2017.12.29 |
---|---|
level5 - 레이스 컨디션(Race Condition) (1) | 2017.12.22 |
level2 - vi에서의 명령어 기능 (0) | 2017.11.29 |
level1 - setuid (0) | 2017.11.29 |
ftz.시스템 해킹 테크닉(level4) - xinetd 백도어 (0) | 2017.11.27 |