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

hamayanhamayan's blog

RITSEC CTF 2018 Web問題 Write-up

もたもた復習してたら、サイトが閉じてしまった

[100] Space Force

fun.ritsec.club:8005から抜き出す。

解説1 解説2

SQLインジェクションをする。
「'=''or'」と「'/**/union/**/select/**/*/**/from/**/spaceships#」がペイロードとして紹介されている。
「'=''#」でも取れた。
WHEREは「カラム=値」じゃなくても「値=カラム」でも取れるんだなという気づき。

/**/はSpace2Commentという技術っぽい。多分、*/*/を挟むと空白として使われるというもの。

[200] The Tangled Web

fun.ritsec.club:8007から抜き出す。
解説1 解説2

どちらも、全てのページを取ってきて考えている。
解説2に、wgetのコマンドで全て取ってくるやつが紹介されている。
(手元のubuntuでやってみたら失敗したけど)

色々探ると、「UklUU0VDe0FSM19ZMFVfRjMzNzFOR18xVF9OMFdfTVJfS1I0QjU/IX0=」が出てくるので、base64でデコードすると答え。
最後に=があるとbase64っぽいのかな。
echo "UklUU0VDe0FSM19ZMFVfRjMzNzFOR18xVF9OMFdfTVJfS1I0QjU/IX0=" | base64 -d
で答えが出てくる。

[250] Crazy Train

fun.ritsec.club:3000から抜き出す。
解説1 解説2

ソースを見てみるとheadタグの中に

<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="Ihs3V/sA44+40CvkMuwY2Qsvv277XZ8bTTTWGK2Hv6MJpjZ7FrERjZNvlJkVKB0elC6roTs4l1xi9xBR/vbUhg==" />

とある。これはrubyでのクロスサイトリクエストフォージェリ対策である。
よって、rubyが後ろで動いていることがわかる。
 
加えて、

<input type="hidden" name="article[a]" id="article_a">

が隠されているので、ここに5-5とか入れると0と帰ってくる。
つまり、コマンドインジェクションができそう。
rubyでコマンドインジェクションをするときは`で囲めばいいみたいなので、
`ls .`をして、ファイル構成を明らかにすると、flag.txtがあるので、
`cat flag.txt`で出すと答え。

[300] Archivr

fun.ritsec.club:8004

https://en.wikipedia.org/wiki/Reverse_proxy

[350] What a cute dog!

This dog is shockingly cute!

fun.ritsec.club:8008

[400] Lazy Dev

fun.ritsec.club:8007