Don't wanna be here? Send us removal request.
Text
picoCTF writeup - mod26
cvpbPGS{arkg_gvzr_V'yy_gel_2_ebhaqf_bs_ebg13_Ncualgvd}
descriptionにあるとおりROT13すれば良い。
raw="cvpbPGS{arkg_gvzr_V'yy_gel_2_ebhaqf_bs_ebg13_Ncualgvd}"
original="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
rot13ed="nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"
rot_table=str.maketrans(original, rot13ed)
result=raw.translate(rot_table)
print(result)
もう少しスマートな方法もあると思う。
0 notes
Text
picoCTF writeup - obedient cat
picoCTFのフラグがどう記述されているかを理解するためのチュートリアル。
フラグファイルをダウンロードして中身を見る。
0 notes
Text
nitic ctf writeup
nitic ctfに参加したので解いた順にwriteupを残しておく。 運営の皆様ありがとうございました。
1. web meta ダウンロードしたhtmlファイルのヘッダからフラグ取得。
2. long_flag $ curl -o long_flag.html https://quizzical-mcnulty-e4cdbf.netlify.app/ でページソースを取得するとspanタグに挟まれたフラグが1文字ずつ見える。 $ sed -e 's/<[^>]*>//g' long_flag.html を実行してタグを取り除いてフラグ取得。
3. pwn_monster 1 ncするとゲーム開始。 何が動くのか理解するために、一回そのまま動作させてみる。 名前を入力すると、nameの左に16進数で名前のasciiコードが出てきてゲーム開始。 入力フィールドが名前しかないので、規定文字数以上入れると他の数値を書き換えられると考えて、 fff....ff という入力を作成。無事hp, attackのパラメータを巨大な数にしてフラグ取得。 先にソースコードを読んで、構造体を理解して...というのが理想的なフラグ取得であろうと思われる。
4. excel excel(拡張子xlsx)は実体がzipだと分かっていたため、 ダウンロードしたexcelの拡張子をzipに変更して展開。展開したディレクトリの中で $ find ./ -type f -print0 | xargs -0 grep nitic を実行してフラグ取得。
5. Caesar Cipher タイトルから2文字ずらせば良いかなと考えたが失敗。 エンコード済み文字列から以下のようにアルファベットを順に並べて、目視で有意な文字列を探す力業でフラグ取得。 rnckpvgzv sodlqwhaw tpemrxibx plaintext qmbjoufyu
6. protected ダウンロードしたファイルを展開して $ file chall chall: ELF 64-bit LSB shared object, x86-64, ... ELFとのことで実行バイナリと判定。 $ strings chall で有用そうな情報はないか探してみる。 ここで実行時のパスワード文字列が平文で保持されていた。 バイナリを実行するとパスワードを求められるので先のパスワードを入力してフラグ取得。
7. image conv 液晶を斜めに覗くとフラグヘッダが見えたのでgimpでコントラストを調整してフラグ取得。
8. ord_xor エンコードプログラムを読み込んでxorでエンコードされていると理解。 xorは二回適用するともとのデータに戻るので、プログラムの実行内容から $ export FLAG=ENCODED_FLAG #バッククォートは\でエスケープ $ python3 enc_sample.py $ cat flag としてフラグ取得。
9. pwn_monster 2 チェックサムがあるが、オーバーフローしてチェックサムを実現すれば良いと理解。 単純にhp、attackを7f ff ff ff ff ff ff ffにするとチェックサムが-1となってしまう。 ここで発想を逆転してattackをマイナ���値にして敵hpを(回復させることで)オーバーフローさせれば良いと気がつく。 あとは計算した値をechoでパイプ渡ししてフラグ取得。
反省 1. Crypto: tanitu_kanjiで解決までの道筋が見えていても短時間でプログラムに落とし込むまでの力が不足していた。 2. python、javascriptについてのスキルが全体的に不足。 3. スタックオーバーフローについて概要は分かっていても実践に移せていないので、実践できるよう練習が必要。 4. writeupの書き方として、公開すべき情報と隠蔽すべき情報の境界を見極めたい。
0 notes