- Q23.[Reversing]またやらかした!
- みんなのWriteup見てたら「ghidra」が必要らしいのでインストール
- ここからzipファイルをダウンロード
'/home/ubuntu/ghidra_11.0.2_PUBLIC_20240326/ghidra_11.0.2_PUBLIC/ghidraRun' - DLしたZIPを展開したら、Ubuntuを使ってる場合「ghidraRun」を実行するんだけど、実行にはjavaが必要とのことなのでjavaをインストールしていく
- これが終わった後に「ghidraRun」を実行すると使えた
- 使い方は端折るとして「ghidra」の右側の画面31行目に「local_44[local_84] = local_7c[local_84] ^ 0x19;」と書いてあるよ
※この記号「^」は「ビット毎の排他的論理和」をとるらしい
(参考URL:https://www602.math.ryukoku.ac.jp/Prog1/cops.pdf)
つまり、local_7c[0]〜local_7c[13]に対して、一つずつ「0x19」との排他的論理和をとってlocal_44[0]~local_44[13]に格納してる - 「ghidra」の右側の画面に表示されたコードを、新しく作ったCのファイルにコピペして、単語をC言語用にちょっと書き直す。ついでにprintfを追加して実行すればフラグゲット(/・ω・)/ (どうでもいい話ですけど、1回限りのコードは基本コピペで済ます派です)
- Q24.[Web]Baby's SQLi - Stage 2-
- 1つ前の問題「[Web]Baby's SQLi - Stage 1-」をといた際、次のステージのURL(https://ctf.spica.bz/baby_sql/stage2_7b20a808e61c8573461cf92b1fe63b3f/index.php)も示されているのでそこにアクセスする
-
あとはSQLインジェンクションの典型的な「1=1」みたいなやつを入れることだけは分かったのでググって解決しました~(*´ω`)~
※「--」これ以降をコメントアウトする
- Q26.[PPC]Remainder theorem
- これは力業で愚直に解いた
- Q29.[Crypto] Common World
- 公開鍵暗号で使われているRSA暗号で、Nが共通(問題分とHISTのNが同じとな!)かつ「同じ平分を暗号化」している時にCommon Modulus Attackという攻撃ができる。。。らしい。。。(゜-゜)
※問題文とHISTが「同じ暗号文」を暗号化しているとは問題文にも記載されていなかったので分からなかったのだ。。。まあ、分かったところで解けはしないけどね。。。 - https://gist.github.com/horoama/688c94fe629a321284c2b4706c75be98#file-common_modulus_attack-py-L9
上記からソースを拝借して自分の環境で実行できるようにちょっとコードを
お手入れした
- import gmpy を import gmpy2 に変更
- あとはprintにカッコ()をつけてあげる
- コマンドで『sudo apt -y install python3-dev』を実行
- ※gcd(a,b)・・・整数a,bの最大公約数を表す
- あとはpyのコードを実行してあげるとフラグがゲットできた
- んだけど、下記のサイトでは別の解き方「カーマイケルの定理」でやってる方がいたので後で確認しようね自分よ
https://partender810.hatenablog.com/entry/2021/05/30/132145
- 公開鍵暗号で使われているRSA暗号で、Nが共通(問題分とHISTのNが同じとな!)かつ「同じ平分を暗号化」している時にCommon Modulus Attackという攻撃ができる。。。らしい。。。(゜-゜)