ASIS CTF Finals 2015 write-up
9th. pic.twitter.com/OwYOJWVACy
— Ikumi Shimizu (@_193s) 2015, 10月 12
scryptosとして参加.2576pts, 9位でした.
解いた問題: What’s example flag?, Flag Hunter, ultra compression, My blog, Impossible, Bodu, shop-1
My blog (Web 150)
first solveを取った.
/robots.txt
にDisallow: /myblog_private_dir3ct0ry
という記述がある.手元からアクセスしても403を返すが,printpage.php
がHTTPのRefererヘッダのURLに対してGETを飛ばしてpdfにしているのでこれを利用してhttp://myblog.asis-ctf.ir:8088/myblog_private_dir3ct0ry/
を読ませてみたらログインページっぽいものが出てきた.どうやらアクセス元のipが向こうのものであったら通してくれるっぽい.
しかし,HTMLのコードが読めないのでどこに対してどういう形のloginリクエストを投げているのかが不明.ここで偶然87.107.123.3:31337
でqualsのpwn問題,saw thisのバイナリが動いていることに気が付いた(!!).チームメンバーが過去に書いていたexploitを使ってshell奪取,/tmp, /var/tmpが潰されていたものの/dev/shmは使えたのでここで適当に手元からシェルスクリプトを転送しながら作業していたらloginページのソースコードが取れた.
|
|
SQLi等は必要なくadmin:admin
で入れた.curl 'http://myblog.asis-ctf.ir:8088/printpage.php?id=2417648298' -H "Referer: http://myblog.asis-ctf.ir:8088/myblog_private_dir3ct0ry?username=admin&password=admin&login=Login" > 🏁.pdf
flag: ASIS{9c846eab5200c267cb593437780caa4d}
ultra compression (Web 125)
こちらもfirst solveを取った.
ファイルを/ajax_php_file.phpにpostするとcompressしたファイルをへのリンクを表示する(URLだけで実際にはダウンロードできない,運営によるとこれが正常な動作らしい).
返されるリンクはhttp://ucs.asis-ctf.ir/download.php?id=????
の形で,idの生成法則を見てみるとファイル名と一対一に対応している.;
を入れるとidが途切れることなどから,(状況的に無理がある気もしたが)OSコマンドインジェクションの匂いを感じた.PHPSESSIDごとにキーが異なる単一換字暗号によってidが作られていることがわかったので,PHPSESSIDを固定した上でテーブルを作ってpayload作成->適当なコマンドを実行させてみたところ成功した.あとはやるだけ.
ls / -> vmlinuz
ls /home/ -> asis
ls /home/asis -> flag.txt
cat /home/asis/flag.txt -> 🏁
flag: ASIS{72a126946e40f67a04d926dd4786ff15}
Bodu (Crypto 175)
問題名からしてRSA Boneh-Durfee’s Attack.
d = 89508186630638564513494386415865407147609702392949250864642625401059935751367507
flag: ASIS{b472266d4dd916a23a7b0deb5bc5e63f}
Impossible (Web 225)
PHP MD5 collision.users.datのuser名の中にmd5が^0e
なものが存在するので,collisionを見つけてregister.phpでパスワードを抜いてlogin -> 🏁
flag: ASIS{d9fb4932eb4c45aa793301174033dff9}
shop-1 (pwn 100)
login時のbuffer over-readによってmemcmpの戻り値がleakできる.
- 一度adminでlogin試行
- guestでlogin & leak
- logout
を繰り返すことでadminのパスワードが1文字ずつ特定できるので,適当にコードを書いて求めた.
|
|
flag: ASIS{304b0f16eb430391c6c86ab0f3294211}