Sh4n3e

[웹해킹][Natas] Natas9 문제 풀이 본문

Wargame/ NATAS

[웹해킹][Natas] Natas9 문제 풀이

sh4n3e 2017. 11. 27. 21:48

문제를 풀어보자!

[URL : http://natas9.natas.labs.overthewire.org]

해당페이지에 접속하면 아래와 같은 화면이 뜬다.



Find words containing으로 해당 단어가 포함되어 있는지 찾아보는 페이지로 제작되어 있는듯 하다.

해당 문제를 정확하게 파악하기 위해 Source code를 볼 수 있는 Link로 들어가보자.



상당히 인상깊은 부분을 볼 수 있는데, 그것은 바로 passthru이다. passthru가 어떤 기능을 하는 함수인지 간단하게 알아보고 넘어가자.

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

php.net에서 passthru 함수에 대한 정의를 찾아볼 수 있는데, 


passthru

(PHP 4, PHP 5, PHP 7)

passthru — Execute an external program and display raw output

설명 ¶

void passthru ( string $command [, int &$return_var ] )

The passthru() function is similar to the exec() function in that it executes acommand. This function should be used in place of exec() or system() when the output from the Unix command is binary data which needs to be passed directly back to the browser. A common use for this is to execute something like the pbmplus utilities that can output an image stream directly. By setting the Content-type to image/gif and then calling a pbmplus program to output a gif, you can create PHP scripts that output images directly. 



위와 같이 설명되어 있다. 간단하게 말하자면 PHP script내에 존재하는 passthur 함수는 command를 실행할 수 있는 exec()함수와 유사한 함수라는 것이다. (사실 해당함수는 PHP용 webshell에 많이 이용되는 함수이다.)

이 함수는 exec() 또는 system()에 대신하여 사용되어 질 수 있다. (결론적으로 위험한 함수라는 것이다....)


그럼 다시 위로 돌아가서, 해당함수는 아래의 명령어를 쓰고 있는데,

passthru("grep -i $key dictionary.txt");

grep -i $key dictonary.txt 

이것은 dictionary.txt에 $key에 해당하는 값이 존재하는지 확인하는 명령어이다.

이렇게 되어있으면 과연 우리가 원하는 함수를 어떻게 사용하지 싶을 것이다.


간단하다... ';'이거 하나면 된다.

;은 하나의 명령어를 끝냄을 의미한다.

따라서 우리는 이런식으로 명령어를 사용할 것이다.

;cat /etc/natas_webpass/natas10

이렇게되면 Full 명령어는 아래와 같을 것이다.

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


이렇게 되면 grep -i 가 실행되고,

cat /etc/natas_webpass/natas10 dictionary.txt 가 실행될 것이다.

실행해보자.



우리는 natas10행 티켓을 얻었다. 다음으로 넘어가보자!


nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu


Comments