SunshineCTF 2020
SunshineCTF 2020に参加しました
最近ちょこちょこctfやってて、割と解けたので書きたいと思います。bodhiで参加して最終的には233ptsで156位とかだった気がする。あんまり覚えていない。今回はspeedrun3問とrev1問書きます。revはもう友達が解いてくれていたのに、間違えてといてしまった。speedrun(pwn)は知識がないので調べながらやったため、おかしいところもあるかもしれません。
speedrun-00 (10pts)
配布されたファイル chall_00
まずfileコマンドで見ると64bitのelfであることが分かります。適当に実行して、ghidraでデコンパイルします。main部を見ます。getsの後にifで比較しています。なので、オーバーフローさせて、要素を書き換えてあげるといいことがわかります。スタックバッファオーバーフローですね。(あってる?)
以下にコードを書きます。
このあとls -aしてcat flag.txtして終わりです。
speedrun-02 (10pts)
配布されたファイル chall_02
01は解けなかったので02に逃げちゃいました。00と同じくfileコマンドで見ると32bitのelfであることがわかります。ghidraでデコンパイルしてmain部を見ます。fgetsした後、vuln関数を呼び出しています。vuln関数ではgetsをして終わりです。なので、まずはfgetsに適当に文字を入れて、vuln関数に行った後でオーバーフローさせればいいことがわかります。オーバーフローさせてwin関数に行くといろいろできます。(これをshellを奪うっていうのかな?)
以下にコードを書きます。
このあとls -aしてcat flag.txtして終わりです。
speedrun-04 (10pts)
配布されたファイル chall_04
4は2と一緒です。単純にelfが32から64bitに変わっただけです。
以下にコードを書きます。
Hotel Door Pazzle (100pts)
配布されたファイル hotel_key_puzzle
fileコマンドで見ると、64bitのelfであることがわかります。これもghidraでデコンパイルして見てみるとmainでいろいろ言った後、check_flagで見ていることがわかります。check_flagを見に行くと、内容はやばいですね。でも僕は嬉しかったです。最近勉強したangrが使えるからです!
以下にコードを書きます。
解けた!ってなったけど、もう解かれてたんだよなぁw
感想
今回は簡単pwnを解くことができて嬉しかったです。cryptoは全く分からなかった。speedrunはwriteupを見て全部解けるようにしたいです。
今週末はいよいよKOSENセキュコンなので、いい成績が残せるように頑張りたいですね。