level3

 

패스워드를 확인하는 김에 앞서 풀었던 level1과 level2를 복습하고 왔다.

" setuid를 이용하여 /bin/bash 디렉토리로 들어간 뒤 -> my-pass 명령어를 작동시킨다 "

이것이 모든 FTZ 레벨의 목표임을 상기하고 가도록 하자.

패스워드를 치고 레벨에 들어오면 가장 먼저 해야 할 것은 디렉토리 확인이다.

좀 번잡하더라도 ls -al 명령어를 이용해 항상 숨겨진 디렉토리까지 전부 보도록 하고 있다.

디렉토리를 확인하니 어렵지 않게 hint 파일이 눈에 들어온다.

cat hint 명령어로 열어주었다.

 

이것이 이번 힌트이다. C 코드로 되어 있다.

프로그래밍개론 강의에서 배운 익숙한 부분이 보인다.

사용자가 입력하는 프롬프트 라인 내용을 가져오는 명령행 인자이다.

 

핵심적인 내용만 대략 요약하자면 아래와 같다.

> argc 변수가 2가 아니면 -> " Auto Digger Version 0.9 (개행) Usage : ** host " 문구 출력, 종료

> 위에서 종료되지 않았다면(argc 변수가 2라면) -> " dig @ ** version.bind chaos txt " 문구 출력

 

덧붙여 '동시에 여러 명령어를 사용하는 것'과 '문자열 형태로 명령어를 전달하는 것'이 키 포인트라고 나와 있다.

 

 

해독은 어찌저찌 했지만, 솔직히 이것만 가지고서는 감이 잘 오지 않는다.

일단 level 1~2에서 했던 대로 find 명령어를 가지고 권한이 있을 디렉토리를 찾아보기로 했다.

사용자는 level4로, 오류는 삭제하도록 인자를 설정해주는 것도 잊지 말자.

 

검색했더니 바로 autodig가 들어있는 bin 디렉토리가 나왔다.

cd bin 명령어를 이용해 bin 디렉토리로 이동해 준다.

 

bin으로 이동하면 안에 정말 autodig가 있는지 확인차 한번 찾아본다.

ls autodig 명령어로 찾아보니 정말로 있다. (붉은 표시)

 

바로 ./autodig로 해당 디렉토리로 들어가려 해 보니, 위에서 봤던 메시지가 뜬다.

argc가 2가 아닐 때 뜬다던 그 메시지다. 구글링해 보았더니 뒤에 인자가 없어 오류가 뜨는 것이라고 한다.

 

그러면 우리는 autodig가 알아먹을 수 있도록 우리의 명령어를 인자로써 전달해야 하는데, 몇 가지 조건이 있다.

1. 문자열로 인식될 수 있게 전달할 것

2. 복수의 명령어라면 한번에 전달할 것

3. /bin/bash를 여는 명령과 my-pass를 실행시키는 명령 모두 전달할 것

 

1번은 명령 스트링을 " "(큰따옴표)로 감싸면 되고,

2번은 명령어들 사이를 ;(세미콜론)으로 연결하면 되며,

3번은 위의 조건을 충족시켜 적절히 잘 적어넣으면 된다. ./autodig 명령어 뒤에 인자로 말이다.

그렇게 입력하면 이런 결과가 나온다.

 

패스워드 부분은 임의로 모자이크처리했다.

 

다음 패스워드는 밑에 흰 글씨로 적어놓겠다.

suck my brain

+ Recent posts