<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>M15tak3のBlog</title>
    <link>https://blog.m15tak3.com/ja/algolia.json</link>
    <description>Recent content from M15tak3のBlog</description>
    <generator>Hugo</generator>
    <language>ja</language>
    
    <managingEditor>skyman.soul@gmail.com (M15tak3)</managingEditor>
    <webMaster>skyman.soul@gmail.com (M15tak3)</webMaster>
    
    <copyright>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</copyright>
    
    <lastBuildDate>Thu, 14 May 2026 17:00:00 +0800</lastBuildDate>
    
    
    <atom:link href="https://blog.m15tak3.com/ja/index.xml" rel="self" type="application/rss&#43;xml" />
    

    
      
    

    <item>
      <title>CTF分野の詳細ガイド</title>
      <link>https://blog.m15tak3.com/ja/post/ctf%E6%96%B9%E5%90%91%E8%AF%A6%E8%A7%A3/</link>
      <pubDate>Thu, 14 May 2026 17:00:00 &#43;0800</pubDate>
      <author>skyman.soul@gmail.com (M15tak3)</author>
      <guid>https://blog.m15tak3.com/ja/post/ctf%E6%96%B9%E5%90%91%E8%AF%A6%E8%A7%A3/</guid>
      <description>
        <![CDATA[<h1>CTF分野の詳細ガイド</h1><p>著者: M15tak3(skyman.soul@gmail.com)</p>
        
          <h1 id="ctf分野の詳細ガイド">
<a class="header-anchor" href="#ctf%e5%88%86%e9%87%8e%e3%81%ae%e8%a9%b3%e7%b4%b0%e3%82%ac%e3%82%a4%e3%83%89"></a>
CTF分野の詳細ガイド
</h1><h2 id="1-ctfとは">
<a class="header-anchor" href="#1-ctf%e3%81%a8%e3%81%af"></a>
1. CTFとは
</h2><p>CTF（Capture The Flag）は情報セキュリティ競技の形式です。参加者は解析、脆弱性利用、復号、リバース、フォレンジックなどを通じて <code>flag</code>（通常は特定形式の文字列）を取得し、得点します。</p>
<p>CTFの本質はツールコマンドの暗記ではなく、システム原理・安全機構・攻防思考を総合的に理解することにあります。</p>
<h3 id="11-よくある大会形式">
<a class="header-anchor" href="#11-%e3%82%88%e3%81%8f%e3%81%82%e3%82%8b%e5%a4%a7%e4%bc%9a%e5%bd%a2%e5%bc%8f"></a>
1.1 よくある大会形式
</h3><ul>
<li>Jeopardy: 分野別問題（Web、Pwn、Reverse、Crypto、Misc など）を順に解いて flag 提出</li>
<li>Attack-Defense: 相手チームを攻撃しつつ自チームのサービスを防御</li>
<li>King of the Hill: 目標を継続占有して得点</li>
</ul>
<h3 id="12-ctfの価値">
<a class="header-anchor" href="#12-ctf%e3%81%ae%e4%be%a1%e5%80%a4"></a>
1.2 CTFの価値
</h3><ul>
<li>実践力向上: 断片知識を攻撃/防御チェーンに統合</li>
<li>工学力向上: 自動化、デバッグ、ログ分析、復盤の習慣化</li>
<li>協業力向上: 分業、並行実行、時間管理、戦略判断</li>
</ul>
<h3 id="13-問題の特徴">
<a class="header-anchor" href="#13-%e5%95%8f%e9%a1%8c%e3%81%ae%e7%89%b9%e5%be%b4"></a>
1.3 問題の特徴
</h3><ul>
<li>多くは「1つの利用可能な欠陥」を中心に設計され、実運用と完全一致しない</li>
<li>ノイズ情報が意図的に混ざっており、手掛かり選別が必要</li>
<li>高得点問題は複数ステップ連鎖が多い</li>
</ul>
<hr>
<h2 id="2-web分野">
<a class="header-anchor" href="#2-web%e5%88%86%e9%87%8e"></a>
2. Web分野
</h2><h3 id="21-コア">
<a class="header-anchor" href="#21-%e3%82%b3%e3%82%a2"></a>
2.1 コア
</h3><p>Webアプリの動作を理解し、設計/実装上の欠陥から機密情報（flag など）を取得する。</p>
<h3 id="22-代表的な問題">
<a class="header-anchor" href="#22-%e4%bb%a3%e8%a1%a8%e7%9a%84%e3%81%aa%e5%95%8f%e9%a1%8c"></a>
2.2 代表的な問題
</h3><ul>
<li>SQLインジェクション</li>
<li>XSS（反射/格納/DOM）</li>
<li>ファイルアップロード脆弱性</li>
<li>逆シリアライズ問題</li>
<li>SSRF</li>
<li>コマンド実行（RCE）</li>
<li>認証/セッション不備</li>
<li>アクセス制御不備（権限昇格・越権）</li>
<li>SSTI</li>
<li>パストラバーサル / LFI/RFI</li>
</ul>
<h3 id="23-必要知識">
<a class="header-anchor" href="#23-%e5%bf%85%e8%a6%81%e7%9f%a5%e8%ad%98"></a>
2.3 必要知識
</h3><ul>
<li>HTTP/HTTPS基礎</li>
<li>主要バックエンドの挙動（Flask、Django、PHP、Node）</li>
<li>SQL基礎</li>
<li>入力/処理/出力の安全モデル</li>
<li>エンコード/デコード</li>
</ul>
<h3 id="24-よく使うツール">
<a class="header-anchor" href="#24-%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e3%83%84%e3%83%bc%e3%83%ab"></a>
2.4 よく使うツール
</h3><ul>
<li>Burp Suite</li>
<li>ブラウザDevTools</li>
<li>sqlmap</li>
<li>ffuf / dirsearch</li>
<li>Postman / curl</li>
</ul>
<h3 id="25-解法の基本フロー">
<a class="header-anchor" href="#25-%e8%a7%a3%e6%b3%95%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%95%e3%83%ad%e3%83%bc"></a>
2.5 解法の基本フロー
</h3><ol>
<li>画面・API・パラメータ・認可ロジックを棚卸し</li>
<li>入力可能点を特定</li>
<li>境界挙動（特殊文字、長大入力、型不一致）を確認</li>
<li>エラー/応答から脆弱性タイプを判断し payload 構築</li>
<li>初期突破後に横展開（ファイル読み取り、権限昇格、内部探索）</li>
</ol>
<hr>
<h2 id="3-misc分野">
<a class="header-anchor" href="#3-misc%e5%88%86%e9%87%8e"></a>
3. Misc分野
</h2><h3 id="31-コア">
<a class="header-anchor" href="#31-%e3%82%b3%e3%82%a2"></a>
3.1 コア
</h3><p>Miscは総合問題。情報処理力、スクリプト自動化、分野横断の発想力が問われる。</p>
<h3 id="32-代表的な問題">
<a class="header-anchor" href="#32-%e4%bb%a3%e8%a1%a8%e7%9a%84%e3%81%aa%e5%95%8f%e9%a1%8c"></a>
3.2 代表的な問題
</h3><ul>
<li>エンコード/デコード</li>
<li>ステガノグラフィ</li>
<li>通信解析（pcap、HTTP/TCP）</li>
<li>フォレンジック断片（ログ、圧縮、メタデータ）</li>
<li>自動化ミニゲーム/プロトコル対話</li>
<li>QR/バーコード/キーボードログ/モールス等</li>
</ul>
<h3 id="33-必要知識">
<a class="header-anchor" href="#33-%e5%bf%85%e8%a6%81%e7%9f%a5%e8%ad%98"></a>
3.3 必要知識
</h3><ul>
<li>ファイル形式構造（PNG/JPG/ZIP/PDF）</li>
<li>ネットワーク基礎（TCP/HTTP/DNS）</li>
<li>Linux CLI</li>
<li>Python処理（正規表現、バイト列、バッチ処理）</li>
</ul>
<h3 id="34-よく使うツール">
<a class="header-anchor" href="#34-%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e3%83%84%e3%83%bc%e3%83%ab"></a>
3.4 よく使うツール
</h3><ul>
<li>CyberChef</li>
<li>Wireshark / tshark</li>
<li>binwalk / foremost</li>
<li>stegsolve / zsteg / exiftool</li>
<li>Python</li>
</ul>
<h3 id="35-解法の基本フロー">
<a class="header-anchor" href="#35-%e8%a7%a3%e6%b3%95%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%95%e3%83%ad%e3%83%bc"></a>
3.5 解法の基本フロー
</h3><ol>
<li>アーティファクト種別を見極める</li>
<li>メタデータ/構造（ヘッダ、フッタ、magic bytes）を確認</li>
<li>可逆変換を試す</li>
<li>反復作業は早めにスクリプト化</li>
</ol>
<hr>
<h2 id="4-crypto分野">
<a class="header-anchor" href="#4-crypto%e5%88%86%e9%87%8e"></a>
4. Crypto分野
</h2><h3 id="41-コア">
<a class="header-anchor" href="#41-%e3%82%b3%e3%82%a2"></a>
4.1 コア
</h3><p>CTFのCryptoは、現代暗号の総当たりよりも、弱いパラメータ・実装ミス・運用ミスの悪用が中心。</p>
<h3 id="42-代表的な問題">
<a class="header-anchor" href="#42-%e4%bb%a3%e8%a1%a8%e7%9a%84%e3%81%aa%e5%95%8f%e9%a1%8c"></a>
4.2 代表的な問題
</h3><ul>
<li>古典暗号</li>
<li>RSA系脆弱性</li>
<li>共通鍵暗号の誤用（ECB、IV再利用、padding oracle）</li>
<li>ハッシュ関連問題</li>
<li>予測可能乱数</li>
</ul>
<h3 id="43-必要知識">
<a class="header-anchor" href="#43-%e5%bf%85%e8%a6%81%e7%9f%a5%e8%ad%98"></a>
4.3 必要知識
</h3><ul>
<li>剰余演算、ユークリッド互除法、逆元</li>
<li>素数、オイラー関数、高速べき乗</li>
<li>暗号モード（ECB/CBC/CTR/GCM）</li>
<li>署名/認証基礎</li>
</ul>
<h3 id="44-よく使うツール">
<a class="header-anchor" href="#44-%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e3%83%84%e3%83%bc%e3%83%ab"></a>
4.4 よく使うツール
</h3><ul>
<li>Python + <code>pycryptodome</code></li>
<li>SageMath</li>
<li>factordb / yafu</li>
<li>RsaCtfTool</li>
</ul>
<h3 id="45-解法の基本フロー">
<a class="header-anchor" href="#45-%e8%a7%a3%e6%b3%95%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%95%e3%83%ad%e3%83%bc"></a>
4.5 解法の基本フロー
</h3><ol>
<li>数学問題か実装不備問題かを判定</li>
<li>既知/未知を整理</li>
<li>数学的関係を立て、可解性確認</li>
<li>弱点パラメータ/再利用を優先検証</li>
</ol>
<hr>
<h2 id="5-pwn分野">
<a class="header-anchor" href="#5-pwn%e5%88%86%e9%87%8e"></a>
5. Pwn分野
</h2><h3 id="51-コア">
<a class="header-anchor" href="#51-%e3%82%b3%e3%82%a2"></a>
5.1 コア
</h3><p>バイナリのメモリ安全性欠陥を利用し、実行フローを制御して最終的に flag 取得または shell 奪取を目指す。</p>
<h3 id="52-代表的な問題">
<a class="header-anchor" href="#52-%e4%bb%a3%e8%a1%a8%e7%9a%84%e3%81%aa%e5%95%8f%e9%a1%8c"></a>
5.2 代表的な問題
</h3><ul>
<li>スタックオーバーフロー</li>
<li>ヒープ攻撃</li>
<li>フォーマット文字列脆弱性</li>
<li>整数オーバーフロー起点のOOBアクセス</li>
<li>サンドボックス脱出（上級）</li>
</ul>
<h3 id="53-必要知識">
<a class="header-anchor" href="#53-%e5%bf%85%e8%a6%81%e7%9f%a5%e8%ad%98"></a>
5.3 必要知識
</h3><ul>
<li>C言語メモリモデル</li>
<li>x86/x64呼び出し規約</li>
<li>ELF/動的リンク</li>
<li>Linux/syscall基礎</li>
<li>防御機構（NX, Canary, PIE, RELRO, ASLR）</li>
</ul>
<h3 id="54-よく使うツール">
<a class="header-anchor" href="#54-%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e3%83%84%e3%83%bc%e3%83%ab"></a>
5.4 よく使うツール
</h3><ul>
<li>gdb + pwndbg/gef</li>
<li>pwntools</li>
<li>checksec</li>
<li>IDA / Ghidra</li>
<li>one_gadget / ropper</li>
</ul>
<h3 id="55-解法の基本フロー">
<a class="header-anchor" href="#55-%e8%a7%a3%e6%b3%95%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%95%e3%83%ad%e3%83%bc"></a>
5.5 解法の基本フロー
</h3><ol>
<li><code>checksec</code> で保護機構確認</li>
<li>制御可能入力と危険経路を特定</li>
<li>クラッシュ点とオフセット制御を検証</li>
<li>保護機構に応じて攻撃チェーン選択</li>
<li>ローカル成功後にリモート移植（libc差分・タイミング調整）</li>
</ol>
<hr>
<h2 id="6-reverse分野">
<a class="header-anchor" href="#6-reverse%e5%88%86%e9%87%8e"></a>
6. Reverse分野
</h2><h3 id="61-コア">
<a class="header-anchor" href="#61-%e3%82%b3%e3%82%a2"></a>
6.1 コア
</h3><p>静的/動的解析でロジックを復元し、重要データ・検証式・鍵を取り出す。</p>
<h3 id="62-代表的な問題">
<a class="header-anchor" href="#62-%e4%bb%a3%e8%a1%a8%e7%9a%84%e3%81%aa%e5%95%8f%e9%a1%8c"></a>
6.2 代表的な問題
</h3><ul>
<li>文字列検証と軽い難読化</li>
<li>制御フロー平坦化/偽分岐</li>
<li>逆デバッグ/逆サンドボックス</li>
<li>独自暗号の復元</li>
<li>APK/so/スクリプト混合解析</li>
</ul>
<h3 id="63-必要知識">
<a class="header-anchor" href="#63-%e5%bf%85%e8%a6%81%e7%9f%a5%e8%ad%98"></a>
6.3 必要知識
</h3><ul>
<li>アセンブリ基礎</li>
<li>コンパイラ最適化の影響</li>
<li>PE/ELF/APK構造</li>
<li>ブレークポイント追跡</li>
</ul>
<h3 id="64-よく使うツール">
<a class="header-anchor" href="#64-%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e3%83%84%e3%83%bc%e3%83%ab"></a>
6.4 よく使うツール
</h3><ul>
<li>IDA Pro / Ghidra</li>
<li>x64dbg / OllyDbg</li>
<li>gdb</li>
<li>JADX / apktool</li>
<li>Frida</li>
</ul>
<h3 id="65-解法の基本フロー">
<a class="header-anchor" href="#65-%e8%a7%a3%e6%b3%95%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%95%e3%83%ad%e3%83%bc"></a>
6.5 解法の基本フロー
</h3><ol>
<li>まず実行してI/O挙動確認</li>
<li>重要関数を静的に特定</li>
<li>ブレークポイントで仮説検証</li>
<li>アルゴリズム復元またはパッチで検証回避</li>
</ol>
<hr>
<h2 id="7-aiセキュリティ分野">
<a class="header-anchor" href="#7-ai%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3%e5%88%86%e9%87%8e"></a>
7. AIセキュリティ分野
</h2><h3 id="71-コア">
<a class="header-anchor" href="#71-%e3%82%b3%e3%82%a2"></a>
7.1 コア
</h3><p>モデル・データ・推論パイプライン・統合層に対する攻撃と防御を扱う。</p>
<h3 id="72-代表的な問題">
<a class="header-anchor" href="#72-%e4%bb%a3%e8%a1%a8%e7%9a%84%e3%81%aa%e5%95%8f%e9%a1%8c"></a>
7.2 代表的な問題
</h3><ul>
<li>Prompt Injection</li>
<li>Jailbreak</li>
<li>Data Leakage</li>
<li>Tool Abuse / 権限逸脱</li>
<li>RAG汚染</li>
<li>Model Extraction / Membership Inference</li>
<li>敵対的サンプル</li>
</ul>
<h3 id="73-必要知識">
<a class="header-anchor" href="#73-%e5%bf%85%e8%a6%81%e7%9f%a5%e8%ad%98"></a>
7.3 必要知識
</h3><ul>
<li>LLMのロール階層（system/user/assistant）</li>
<li>RAGパイプライン</li>
<li>Agentのツール呼び出しと権限境界</li>
<li>入力フィルタ、出力監査、ポリシーエンジン</li>
</ul>
<h3 id="74-よく使う方法">
<a class="header-anchor" href="#74-%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95"></a>
7.4 よく使う方法
</h3><ul>
<li>手動ペイロード設計</li>
<li>モデル入力出力とツール呼び出しログ監査</li>
<li>Red Teamベンチマーク</li>
<li>自動注入テスト</li>
</ul>
<h3 id="75-解法の基本フロー">
<a class="header-anchor" href="#75-%e8%a7%a3%e6%b3%95%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%95%e3%83%ad%e3%83%bc"></a>
7.5 解法の基本フロー
</h3><ol>
<li>システム境界の把握</li>
<li>低リスク探索</li>
<li>レイヤー別に突破</li>
<li>再現性の確認</li>
<li>対策提示（最小権限・文脈分離・ガードレール）</li>
</ol>
<h3 id="76-防御チェックリスト">
<a class="header-anchor" href="#76-%e9%98%b2%e5%be%a1%e3%83%81%e3%82%a7%e3%83%83%e3%82%af%e3%83%aa%e3%82%b9%e3%83%88"></a>
7.6 防御チェックリスト
</h3><ul>
<li>System命令はユーザー入力で上書き不可</li>
<li>取得文脈とユーザー入力の分離</li>
<li>ツール呼び出しの権限ゲート</li>
<li>高リスク出力のポリシー検査と人手確認</li>
<li>フルログ保全による再現/追跡</li>
</ul>
<hr>
<h2 id="8-チーム分業の提案">
<a class="header-anchor" href="#8-%e3%83%81%e3%83%bc%e3%83%a0%e5%88%86%e6%a5%ad%e3%81%ae%e6%8f%90%e6%a1%88"></a>
8. チーム分業の提案
</h2><ul>
<li>Web: APIと業務ロジック脆弱性</li>
<li>Pwn: バイナリ攻撃チェーン</li>
<li>Reverse: アルゴリズム復元と補助スクリプト</li>
<li>Crypto: 数学/暗号問題と検証スクリプト</li>
<li>Misc: 通信・ステガノ・雑多問題の高速処理</li>
<li>AIセキュリティ: モデル/Agent攻撃面</li>
</ul>
<p>成熟チームでは各分野に主担当とバックアップを置くのが効果的。</p>
<hr>
<h2 id="9-まとめ">
<a class="header-anchor" href="#9-%e3%81%be%e3%81%a8%e3%82%81"></a>
9. まとめ
</h2><p>CTFはツール競争ではなく、知識構造・分析手法・自動化力・チーム連携の総合力です。</p>
<p>まずは1〜2分野を深掘りして安定得点源を作り、その後に他分野を広げると効率よく成長できます。</p>

        
        <hr><p>この記事は2026-05-14に<a href='https://blog.m15tak3.com/'>M15tak3のBlog</a>で公開され、最終更新日は2026-05-14です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]>
      </description>
      
        <category>CTF</category>
      
    </item>
    
      
    

    <item>
      <title>AIが私たちをイタカへ近づけはじめたとき...</title>
      <link>https://blog.m15tak3.com/ja/post/%E5%BD%93ai%E5%BC%80%E5%A7%8B%E6%9B%BF%E6%88%91%E4%BB%AC%E9%9D%A0%E8%BF%91%E4%BC%8A%E8%90%A8%E5%8D%A1/</link>
      <pubDate>Thu, 07 May 2026 17:00:00 &#43;0800</pubDate>
      <author>skyman.soul@gmail.com (M15tak3)</author>
      <guid>https://blog.m15tak3.com/ja/post/%E5%BD%93ai%E5%BC%80%E5%A7%8B%E6%9B%BF%E6%88%91%E4%BB%AC%E9%9D%A0%E8%BF%91%E4%BC%8A%E8%90%A8%E5%8D%A1/</guid>
      <description>
        <![CDATA[<h1>AIが私たちをイタカへ近づけはじめたとき...</h1><p>著者: M15tak3(skyman.soul@gmail.com)</p>
        
          <h1 id="aiが私たちをイタカへ近づけはじめたとき">
<a class="header-anchor" href="#ai%e3%81%8c%e7%a7%81%e3%81%9f%e3%81%a1%e3%82%92%e3%82%a4%e3%82%bf%e3%82%ab%e3%81%b8%e8%bf%91%e3%81%a5%e3%81%91%e3%81%af%e3%81%98%e3%82%81%e3%81%9f%e3%81%a8%e3%81%8d"></a>
AIが私たちをイタカへ近づけはじめたとき&hellip;
</h1><p>いつからだろう。問題にぶつかったとき、最初の動作が「AIに聞くこと」になっていた。</p>
<p>最初は、もちろんワクワクした。AIは、いつでも点けられる灯りのようだった。以前なら自分で長く手探りしなければならなかった場所を照らしてくれる。コードが読めなければ聞けばいい。エラー原因が分からなければ聞けばいい。CTFで手が止まっても聞けばいい。Web、Reverse、Pwn、Crypto。昔は資料を探して徹夜で試行錯誤していたものが、急に手の届く場所へ来た。</p>
<p>これは確かに進歩だ。否定するつもりはない。AIは多くの障壁を下げ、意味の薄い摩擦を取り除いてくれる。環境構築や専門用語、断片情報で入口に立てなかった人たちが、より自然に学習へ入れるようになった。セキュリティ学習者にとって、この助けは本物だ。難しい知識にやわらかい入口を作り、孤独な学習時間に疲れない伴走者を与えてくれる。</p>
<p>ただ、同時に、別の何かが静かに軽くなっている。</p>
<p>以前のCTFでは、詰まることは普通だった。コードを見ても脆弱性が見えない。payloadを何度作っても反応がない。逆コンパイル結果で迷子になり、通信ログの中から異常を探し、レジスタとスタックの間でプログラムの次の挙動を推測する。学習は遅かった。多くの夜は、きれいな結果ではなく失敗の山だけが残った。</p>
<p>でも振り返ると、残っているのはその「遅さ」だった。すぐ答えが出ない時間が、観察する力を育てた。間違った仮説が、境界を教えてくれた。なかなか解けない問題が、セキュリティは脆弱性名の暗記ではなく、不確実性の中で疑い続けることだと教えてくれた。</p>
<p>今は答えが来るのが速すぎる。問題と向き合う前に、提出へ急いでしまう。流暢な説明が、30分の沈黙の推論を置き換えてしまう。完成度の高そうな解法が、理解した気にさせてしまう。</p>
<p>少し悲しい。AIが強すぎるからではない。私たちが「分からない状態」に耐えにくくなっているからだ。分からないことは、学習の最も自然な入口だった。立ち止まらせ、空白を認めさせ、未知へ少しずつ近づかせる入口だった。今はその空白がすぐ埋まる。画面には自信に満ちた、整った、やさしい答えが現れる。不安は一時的に消える。</p>
<p>でも、理解も一緒に消えるかもしれない。</p>
<p>CTFで本当に重要なのはflagそのものだけではない。flagは終点かもしれないし、合図かもしれない。人を変えるのは、そこへ向かう過程だ。なぜここを疑ったのか。なぜこの経路が成立するのか。なぜ別の方向は失敗したのか。なぜ同じpayloadが環境を変えると通らないのか。この道を自分で歩かなければ、最後の文字列だけ見ても中身は空っぽになりやすい。</p>
<p>AIは答えを出すのが得意だ。でも、答えを自分のものにさせるのは別の話だ。特にセキュリティでは危険が大きい。セキュリティは判断力であり、境界への感度であり、「正常に見えるもの」を疑う態度だからだ。AIは脆弱性を説明し、スクリプトを生成し、専門用語を流暢に並べられる。でも間違う。そしてしばしば、正しそうに間違う。流暢さは誤りをもっともらしくし、推測を結論に見せる。検証する力がなければ、その体裁を真実と取り違えやすい。</p>
<p>AIは、泥道を避けられる近道のようにも見える。でも脚力の一部は、その泥の中で育つ。遠回りは減るが、問題と格闘する時間も減る。結果には速く着けるが、本質には必ずしも近づかない。</p>
<p>これは反AIの話ではない。これからも使うし、もう手放せないことも分かっている。盲点を見せ、時間を節約し、混乱の中で出発点をくれる。だからこそ忘れたくない。道を照らせるのは道具だが、目を育てるのは自分だ。</p>
<p>CTFでAIを使う最良の姿は、解答を代行させることではなく、問題の前にとどまる自分に伴走させることかもしれない。方向を示してくれても、そこに本当に道があるかは自分で判断する。スクリプトを書いてくれても、各行がなぜ必要かは自分で説明できるようにする。答えをくれても、「これは本当に理解した上での答えか」と問い直す。</p>
<p>私たちは、答えがどんどん安くなる時代に入っている。だからこそ、遅くなることに価値がある。遅いことは後退でも無能でもない。問題への敬意であり、理解を自分の手元に残す方法だ。</p>
<p>すべてが進捗、結果、スクリーンショット、要約へ圧縮される時代に、遅くなるには勇気がいる。</p>
<p>セキュリティでは、焦りはとくに危険だ。セキュリティは早押しではなく検証だ。先に脆弱性名を言えた人が真実に近いわけではない。先にpayloadを走らせた人が本質を理解しているわけでもない。必要なのは、忍耐と疑い、そして「もっともらしい場所」で一呼吸置く姿勢だ。多くの脆弱性は、速さではなく、反復的な観察・検証・問い直しによって見つかる。</p>
<p>だから、まだ遅くなることを学びたい。</p>
<p>AIを拒むのでも、過去へ戻るのでもない。使いながら、自分のための距離を残す。まず問題を見る。まず境界を考える。問題を頭の中に少し置いておく。</p>
<p>空白を答えで急いで埋めない。生成された文章で不安を急いで塞がない。</p>
<p>残しておくべき空白がある。</p>
<p>人はそこで思考を始めるからだ。</p>
<p>AIは私たちをイタカへ早く運んでくれる。</p>
<p>でも到着する前に、私たちは本当に海を見ただろうか。</p>

        
        <hr><p>この記事は2026-05-07に<a href='https://blog.m15tak3.com/'>M15tak3のBlog</a>で公開され、最終更新日は2026-05-07です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]>
      </description>
      
        <category>随筆</category><category>CTF</category>
      
    </item>
    
      
    

    <item>
      <title>LinuxでのPython管理（pyenvのインストールと使い方）</title>
      <link>https://blog.m15tak3.com/ja/post/pyenv/</link>
      <pubDate>Wed, 06 May 2026 11:00:00 &#43;0800</pubDate>
      <author>skyman.soul@gmail.com (M15tak3)</author>
      <guid>https://blog.m15tak3.com/ja/post/pyenv/</guid>
      <description>
        <![CDATA[<h1>LinuxでのPython管理（pyenvのインストールと使い方）</h1><p>著者: M15tak3(skyman.soul@gmail.com)</p>
        
          <h1 id="linuxでのpython管理pyenvのインストールと使い方">
<a class="header-anchor" href="#linux%e3%81%a7%e3%81%aepython%e7%ae%a1%e7%90%86pyenv%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%a8%e4%bd%bf%e3%81%84%e6%96%b9"></a>
LinuxでのPython管理（pyenvのインストールと使い方）
</h1><p>新しいLinux（例: Ubuntu 24.04）では、<code>pip</code> でシステム全体にパッケージを入れようとすると <code>externally-managed-environment</code> エラーが出ることがあります。つまり、<code>pip</code> によるグローバルインストールがそのままでは許可されません。</p>
<p>システムのPython環境を壊さず、Pythonバージョン管理もしやすくするために、<code>pyenv</code>（必要に応じて仮想環境）を使うのがおすすめです。</p>
<h2 id="ビルド依存関係のインストール">
<a class="header-anchor" href="#%e3%83%93%e3%83%ab%e3%83%89%e4%be%9d%e5%ad%98%e9%96%a2%e4%bf%82%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab"></a>
ビルド依存関係のインストール
</h2><p><strong>Ubuntu/Debian の場合:</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt-get update<span class="p">;</span> sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
</span></span></code></pre></div><p><strong>CentOS 系の場合:</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils
</span></span></code></pre></div><h2 id="pyenv-のインストール">
<a class="header-anchor" href="#pyenv-%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab"></a>
pyenv のインストール
</h2><p>公式スクリプトでインストールします。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl https://pyenv.run <span class="p">|</span> bash
</span></span></code></pre></div><h2 id="シェル設定を追加して反映">
<a class="header-anchor" href="#%e3%82%b7%e3%82%a7%e3%83%ab%e8%a8%ad%e5%ae%9a%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%97%e3%81%a6%e5%8f%8d%e6%98%a0"></a>
シェル設定を追加して反映
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;export PYENV_ROOT=&#34;$HOME/.pyenv&#34;&#39;</span> &gt;&gt; ~/.bashrc
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;command -v pyenv &gt;/dev/null || export PATH=&#34;$PYENV_ROOT/bin:$PATH&#34;&#39;</span> &gt;&gt; ~/.bashrc
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;eval &#34;$(pyenv init -)&#34;&#39;</span> &gt;&gt; ~/.bashrc
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="c1"># Zsh を使う場合は .bashrc を .zshrc に置き換えてください</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">source</span> ~/.bashrc
</span></span><span class="line"><span class="cl"><span class="c1"># Zsh を使う場合は .bashrc を .zshrc に置き換えてください</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 確認</span>
</span></span><span class="line"><span class="cl">pyenv --version
</span></span></code></pre></div><h2 id="pyenv-の基本操作">
<a class="header-anchor" href="#pyenv-%e3%81%ae%e5%9f%ba%e6%9c%ac%e6%93%8d%e4%bd%9c"></a>
pyenv の基本操作
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># pyenv install python-version 例: 3.13.3 をインストール</span>
</span></span><span class="line"><span class="cl">pyenv install 3.13.3
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv global python-version 例: グローバルを 3.13.3 に設定</span>
</span></span><span class="line"><span class="cl">pyenv global 3.13.3
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv local python-version 例: プロジェクトローカルを 3.13.3 に設定</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> my-project/
</span></span><span class="line"><span class="cl">pyenv <span class="nb">local</span> 3.13.3
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv shell python-version 例: 現在のシェルだけ 3.13.3 に設定</span>
</span></span><span class="line"><span class="cl">pyenv shell python-version
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv virtualenv python-version myproject-env 例: 3.13.3 の ctf 仮想環境を作成</span>
</span></span><span class="line"><span class="cl">pyenv virtualenv 3.13.3 ctf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv activate myproject-env 例: ctf 仮想環境を有効化</span>
</span></span><span class="line"><span class="cl">pyenv activate ctf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv deactivate 仮想環境を終了</span>
</span></span><span class="line"><span class="cl">pyenv deactivate
</span></span></code></pre></div>
        
        <hr><p>この記事は2026-05-06に<a href='https://blog.m15tak3.com/'>M15tak3のBlog</a>で公開され、最終更新日は2026-05-06です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]>
      </description>
      
        <category>技術</category><category>CTF</category>
      
    </item>
    
      
    

    <item>
      <title>WSL2 &#43; Ubuntu をゼロから導入する</title>
      <link>https://blog.m15tak3.com/ja/post/wsl1/</link>
      <pubDate>Wed, 06 May 2026 09:00:00 &#43;0800</pubDate>
      <author>skyman.soul@gmail.com (M15tak3)</author>
      <guid>https://blog.m15tak3.com/ja/post/wsl1/</guid>
      <description>
        <![CDATA[<h1>WSL2 + Ubuntu をゼロから導入する</h1><p>著者: M15tak3(skyman.soul@gmail.com)</p>
        
          <h1 id="wsl2--ubuntu-をゼロから導入する">
<a class="header-anchor" href="#wsl2--ubuntu-%e3%82%92%e3%82%bc%e3%83%ad%e3%81%8b%e3%82%89%e5%b0%8e%e5%85%a5%e3%81%99%e3%82%8b"></a>
WSL2 + Ubuntu をゼロから導入する
</h1><h2 id="はじめに">
<a class="header-anchor" href="#%e3%81%af%e3%81%98%e3%82%81%e3%81%ab"></a>
はじめに
</h2><p>WSL は、Windows 上で動く軽量な仮想環境として捉えられ、VMware よりローカルファイル連携がしやすいのが特徴です。</p>
<p><strong>注意</strong>: サブシステム導入後に Windows を Home から Pro へアップグレードすると、サブシステム側のファイルが破損する可能性があります。必ずバックアップを取ってください。</p>
<h2 id="wsl-のインストール">
<a class="header-anchor" href="#wsl-%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab"></a>
WSL のインストール
</h2><h3 id="機能の有効化">
<a class="header-anchor" href="#%e6%a9%9f%e8%83%bd%e3%81%ae%e6%9c%89%e5%8a%b9%e5%8c%96"></a>
機能の有効化
</h3><p><code>Windows の設定 -&gt; システム -&gt; オプション機能 -&gt; Windows のその他の機能</code> を開きます。</p>
<p><img src="/images/wsl/image-20260506091424950.png" alt="image-20260506091424950"></p>
<p><strong>Linux 用 Windows サブシステム</strong> と <strong>仮想マシン プラットフォーム</strong> を有効にして OK を押します。機能のインストール後、再起動を求められるので再起動します。</p>
<p><img src="/images/wsl/image-20260506091524142.png" alt="image-20260506091524142"></p>
<h2 id="wsl-ubuntu-のインストール">
<a class="header-anchor" href="#wsl-ubuntu-%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab"></a>
WSL Ubuntu のインストール
</h2><p>ターミナルを開いて次を実行します。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-install</span> <span class="n">-d</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span>
</span></span></code></pre></div><p>この環境では Ubuntu 24.04 が自動取得されるので、進行バー完了まで待てばOKです。</p>
<p><img src="/images/wsl/image-20260506092344701.png" alt="image-20260506092344701"></p>
<p>インストール後はサブシステムが自動で起動し、ユーザー名設定を求められます。ディストリによって命名規則が少し異なるため、弾かれた場合は指示に合わせて修正してください。</p>
<p><img src="/images/wsl/image-20260506092455924.png" alt="image-20260506092455924"></p>
<h2 id="サブシステムを別ドライブへ移動する">
<a class="header-anchor" href="#%e3%82%b5%e3%83%96%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%82%92%e5%88%a5%e3%83%89%e3%83%a9%e3%82%a4%e3%83%96%e3%81%b8%e7%a7%bb%e5%8b%95%e3%81%99%e3%82%8b"></a>
サブシステムを別ドライブへ移動する
</h2><p>WSL で取得した Linux は通常 C ドライブに入ります。移動したい場合は、まず Linux シェルで <code>exit</code> を実行します。</p>
<p>次に、WSL を停止して導入済み Ubuntu 22.04 をエクスポート（バックアップ）します。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-shutdown</span>
</span></span><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-export</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span> <span class="n">E:</span><span class="p">\</span><span class="n">WSL</span><span class="p">\</span><span class="n">ubuntu2204</span><span class="p">.</span><span class="py">tar</span>
</span></span></code></pre></div><p><img src="/images/wsl/image-20260506093742003.png" alt="image-20260506093742003"></p>
<p>保存先は任意ですが、ファイル名は <code>.tar</code> で終わる必要があります。</p>
<p>続いて現在のサブシステムを登録解除し、先ほどの tar を指定して希望パスへインポートします。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-unregister</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span>
</span></span><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-import</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span> <span class="n">E:</span><span class="p">\</span><span class="n">WSL</span><span class="p">\</span><span class="n">Ubuntu2204</span> <span class="n">E:</span><span class="p">\</span><span class="n">WSL</span><span class="p">\</span><span class="n">ubuntu2204</span><span class="p">.</span><span class="py">tar</span>
</span></span><span class="line"><span class="cl"><span class="n">wsl</span> <span class="n">-d</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span>
</span></span></code></pre></div><p><img src="/images/wsl/image-20260506093901064.png" alt="image-20260506093901064"></p>
<p>これでサブシステムの保存先が変更され、既存ファイルもそのまま保持されます。</p>

        
        <hr><p>この記事は2026-05-06に<a href='https://blog.m15tak3.com/'>M15tak3のBlog</a>で公開され、最終更新日は2026-05-06です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]>
      </description>
      
        <category>技術</category><category>CTF</category>
      
    </item>
    
  </channel>
</rss>
