加藤祐介ブログ

AlpacaHackで始めるCTF入門5:AlpacaHack Round 3 - qrimeに挑戦

記事投稿日: 2024年10月13日(日)

最終更新日: 2024年10月13日(日)

目次

はじめに

概要

かなり遅れてになりますが、今回はAlpacaHack Round 3の問題に挑戦してみます。 今回は最初の問題の「qrime」を解いてみます。 ジャンルとしては「Crypto」とのことです。 Cryptoは暗号関係の問題ということで私はほとんど暗号の知識を持っていませんが、調べつつ頑張ってみます。

AlpacaHack Round 3のトップページ

AlpacaHack

AlpacaHackへのリンクはこちら

AlpacaHackのサイトへのリンク

私のCTF環境

前回の記事

2024年9月8日の記事です。

AlpacaHackで始めるCTF入門4:AlpacaHack Round 2 - Simple Loginに挑戦

問題内容

この問題ではprime.tar.gzというファイルが与えられます。 中身を展開してみるとchall.pychall.txtの二つのファイルが入っています。 chall.pyを読んでみると素数を使ってflagを暗号化してそうな感じがしました(全然違かったらすみません)。 chall.txtchall.pyの実行結果を保存したファイルっぽいです。 この2つのファイルからflagを取得する問題のようです。

chall.pyを実行してみる

実行にはCryptoというライブラリが必要そうなのでインストールしておきます。 おまけで下記の記事のとおりに他のライブラリもインストールしてみます。

pip install pycryptodome gmpy2 pwntools z3

参考記事↓

Zenn - Crypto で便利なツールを紹介する

とりあえず下記のコマンドで実行してみますが、処理が終わらず、出力結果が返ってきません。

python3 chall.py

どうやらいい感じの乱数(素数?)が取得できるまでループしているっぽいです。

flagの取得方法を考えてみる

ということで、おそらくchall.pyを自分の環境で実行する必要はなくて、chall.pyを実行した際にchall.txtが結果として返ってきた場合、 flagはどうなるかということを考えれば良さそうです。

chall.pyを読み解いてみる

chall.pyの内容を箇条書きしてみます。

何にも分からないけど、逆に計算していけばflagが求まる?

chall.txtにはn,e,c,rの結果が保存されている。

考えたこと

ChatGPTに聞いてみる

おそらくRSA暗号っぽいのでRSA暗号についてChatGPTに聞いてみました。 どうやらnとeが公開鍵、dが秘密鍵と呼ばれるらしいです。 平文のメッセージmをnとeを使って暗号化したものがcで、そのcをd乗してnで割って余りをとると復号化できるらしいです。

つまり、今回はchall.pyにおけるdが求められるとflagが取得できそうです。 そしてdを求めるためにはphiを求める必要があって、phiを求めるためにはpとqを求める必要があります。 おそらくnとrを使ってgen関数を読み解きながらpとqを求めるのかなと思います。 私にはこれ以上難しそうなので一旦やめておきます。

おわりに

AlpacaHack Round 3のqrimeに挑戦してみました。 これまでの人生では暗号というものにほとんど触れたことがなかったので、 勉強する良いきっかけになった気がします。 問題を解くにはほど遠いですが、ChatGPTを使いながら少しずつ暗号についても勉強できたら嬉しいです。 あとは他の方のwriteupを読んで参考にしてみます。 それでは、また。

次回の記事

2024年10月14日の記事です。

AlpacaHackで始めるCTF入門6:AlpacaHack Round 4 - Simple Flag Checkerに挑戦

お知らせ

過去のお知らせ

シリーズ記事一覧

各シリーズの記事を下記にまとめてあります。

我が家のインコ「れもん&ぽぽ&ぐぐ」の日記 我が家のインコ「れもん&ぽぽ&ぐぐ」の日記14 : 大人に近づくれもんと遊ぶ余裕が出てきたぐぐ 我が家のインコ「れもん&ぽぽ&ぐぐ」の日記13 : 生後4ヶ月を迎えたれもんと我が家に慣れてきたぐぐ 我が家のインコ「れもん&ぽぽ&ぐぐ」の日記12 : ぽぽが亡くなりました、そしてぐぐがやってきました インコ仲間「れもん&ぽぽ」の日記11 : ズグロシロハラインコのぽぽ、我が家へ セキセイインコ「れもん」の日記10 : 生後100日のれもん、ついに喋る セキセイインコ「れもん」の日記9 : 換羽期のれもん セキセイインコ「れもん」の日記8 : 病院へ挑戦! セキセイインコ「れもん」の日記7 : 外出用ゲージにチャレンジ! セキセイインコ「れもん」の日記6 : 新宿ことり博に行ってきました! セキセイインコ「れもん」の日記5 : 3週間経って順調に成長している模様 セキセイインコ「れもん」の日記4 : 鳥フェス千葉2024に行ってきました! セキセイインコ「れもん」の日記3 : 2週間経って我が家にも慣れてきた模様 セキセイインコ「れもん」の日記:第2回 セキセイインコの「れもん」が我が家にやってきました!
AlpacaHackで始めるCTF入門 AlpacaHackで始めるCTF入門6:AlpacaHack Round 4 - Simple Flag Checkerに挑戦 AlpacaHackで始めるCTF入門5:AlpacaHack Round 3 - qrimeに挑戦 AlpacaHackで始めるCTF入門4:AlpacaHack Round 2 - Simple Loginに挑戦 AlpacaHackで始めるCTF入門3:初めてのCTFに参加 AlpacaHackで始めるCTF入門2:DreamhackでCTF入門 AlpacaHackで始めるCTF入門1:初めてのCTF
シェル芸 第66回シェル芸勉強会メモ 第64回シェル芸勉強会メモ ChatGPTでシェル芸勉強会の問題が解きたい シェル芸botで遊びたい(Bash)
ROS 2 改訂新版『ROS 2ではじめよう』を読了&メモ書き ROS 2 Jazzy公式チュートリアル02: ROS 2のノードとトピックについて ROS 2 Jazzy公式チュートリアル01: ROS 2 Jazzyのインストールから動作確認まで ROS 2 Humble 公式チュートリアル 02: ROS 2 のノード関係のコマンド ROS 2 Humble 公式チュートリアル 01: 環境構築から turtlesim まで
読書日記 改訂新版『ROS 2ではじめよう』を読了&メモ書き
料理日記 料理日記:豆腐春巻き 料理日記:鶏肉とナスのほりにし炒め 料理日記:卵焼き 料理日記:鶏肉の照り焼き&小松菜のおひたし 料理日記:納豆蕎麦 料理日記:ローストビーフ 料理日記:バターガーリックチキン
その他 HTMLのvideoタグで貼った動画のサムネイルがSafariで表示されない問題を解決 WSL2上のUbuntuのVimで矩形選択するための設定 JR東日本公式のお忘れ物チャットにお世話になった話 HTMLとCSSで画像のスライドショーを作成 GitHub Actionsでサーバ上のブログを自動更新 『Omega Crafter』プレイ日記: チュートリアル編 自作ブログ大改造計画 Windows と Ubuntu のデュアルブート HTML数式表示テスト 自作ブログ開始

加藤祐介ブログの著作物はCC BY-NC-ND 4.0で公開されています。
加藤祐介ブログのソフトウェアはApache License 2.0で公開されています。
About License: GitHub - YusukeKatoBlog/LICENSE
© 2023 YusukeKato All Rights Reserved.