Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

shellgei:misc:491pts

記号のみのBashスクリプトでFlagを表示してください!

http://34.82.208.2:34345/

files.zip files_v4.zip

Hint
参考文献はこちらです。

Solution

URLとソースが配布される(問題に修正が入ったようで複数のソースとなっている)。
アクセスすると記号!"#$%&'()*+,-./:;<=>?@[\]{}^ _\nのみで書かれたBash Scriptを実行してくれるようだ。
site.png
「bash シェル芸 記号」でググると参考になりそうな記事が見つかる。
この記事では/???/???/???${#?}???<<<_.を実行すると、/usr/bin/sha1sumの結果より文字0から9とaからfを取得できることがわかる。
この手法を応用し、/???/ca?<??a?.???を実行すると、/bin/cat<flag.txtとなりフラグが表示されると予測できる。
つまりacのみ持ってこればよい。
適当に試していると/???/???/???${#?}???<<<.///a72c806d375d66d3bb9e524c7e2c01b9b35f0141 -が返って来ることがわかり、1文字目と4文字目がacであることがわかる。
これらをうまく持ってこればよい。
以下のように行う。

__=$(($$/$$)); #1
___=$(/???/???/???${#?}???<<<.///); #a72c806d375d66d3bb9e524c7e2c01b9b35f0141 -
____=${___:$(($__-$__)):__}; #a
_____=${___:$(($__+$__+$__)):__}; #c
/???/${_____}${____}?<??${____}?.???; #/???/ca?<??a?.???

コメントを消した、以下を送信してやればよい。

__=$(($$/$$));___=$(/???/???/???${#?}???<<<.///);____=${___:$(($__-$__)):__};_____=${___:$(($__+$__+$__)):__};/???/${_____}${____}?<??${____}?.???;

flag.png
flagが得られた。

taskctf{I_g0tt3_6e_re4l_w1th_y0u}