Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
bbqsql — SQLインジェクション攻撃ツール | Kitploit
ツール/GitHubGitHub/ciscocxsecurity/bbqsql
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubciscocxsecurity/bbqsql

bbqsql

SQLインジェクション攻撃ツール

リポジトリを見る
8261967年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

#BBQSQL# Blind SQL Injection エクスプロイトツール

目次

  • BBQSQLとは?
  • Readmeの概要
  • 大まかな使い方
  • インストール
  • BBQSQLのオプション
  • クエリ構文の概要
  • HTTPパラメータ
  • 設定のエクスポート
  • 設定のインポート
  • カスタムフック
  • バグを見つけたら?
  • 手伝えますか?
  • 名前の由来は?

BBQSQLとは?##

Blind SQLインジェクションの悪用は面倒なものです。利用可能なツールがうまく動作すれば良いのですが、そうでない場合は独自のスクリプトを書く必要があります。これは時間がかかり退屈です。BBQSQLはこれらの問題に対処するのに役立ちます。

BBQSQLはPythonで書かれたBlind SQLインジェクションフレームワークです。厄介なSQLインジェクションの脆弱性を攻撃する際に非常に便利です。BBQSQLは半自動ツールでもあり、トリガーが難しいSQLインジェクションの検出結果に対してかなりのカスタマイズが可能です。データベースに依存しないように設計されており、非常に汎用性が高いです。また、直感的なUIを備えており、攻撃のセットアップがはるかに簡単です。Pythonのgeventも実装されており、BBQSQLは非常に高速です。

Readmeの概要

ツールはUIで攻撃をセットアップする際に非常にわかりやすいように設計されています。しかし、徹底性を期すために、各設定オプションの詳細について追加の洞察を提供する詳細なReadmeを用意しました。注意点として、UIのすべての設定オプションには説明が関連付けられているため、このページを読まずにツールを起動しても、攻撃を進めることができるはずです。

大まかな使い方

他のSQLインジェクションツールと同様に、特定のリクエスト情報を提供する必要があります。

通常の情報を提供する必要があります:

  • URL
  • HTTPメソッド
  • ヘッダー
  • クッキー
  • エンコーディング方式
  • リダイレクト動作
  • ファイル
  • HTTP認証
  • プロキシ

次に、インジェクションがどこに配置されるか、どのような構文を注入するかを指定します。詳細は以下をお読みください。

インストール

これは簡単なはずですが、何があっても大丈夫です。以下を試してください:

root@kitploit:~
sudo pip install bbqsql

それがうまくいかない場合は、ソースからインストールできます。このツールにはgevent、requestsが必要です。

BBQSQLのオプション

メニューにBBQSQLオプションの場所があります。ここで以下のオプションを指定します:

query

これについては、以下のクエリ構文の概要で詳しく説明します。

csv_output_file

結果を出力するファイルの名前。ファイルに出力したくない場合は空白のままにします。

technique

BBQSQLはBlind SQLインジェクション攻撃を実行する際に2つの手法を利用します。最初のデフォルトの手法はbinary_searchです。詳細はWikipediaを参照してください。

2つ目の手法はfrequency_searchです。頻度検索は英語の分析に基づいて、文字が出現する頻度を判断します。この検索方法は非エントロピーデータに対して非常に高速ですが、英語以外のデータや難読化されたデータに対しては遅くなる可能性があります。

このパラメータの値としてbinary_searchまたはfrequency_searchを指定できます。

comparison_attr

これは発見したSQLインジェクションのタイプを指定します。ここでは、真偽を判断するためにbbqsqlがHTTP応答のどの属性を調べるかを設定します。

status_code、url、time、size、text、content、encoding、cookies、headers、historyを指定できます。

サーバーのステータスコードが異なるSQLインジェクションを特定した場合は、ここに'status_code'を設定します。クッキーが異なる場合は'cookie'を設定します。応答サイズが異なる場合は'size'を設定します。大体の感じはわかるでしょう。

concurrency

同時実行数はPythonのgeventライブラリに基づいています。機能的にはスレッドのように動作しますが、その仕組みの詳細は[ここにリンクを挿入]のDefConトークで確認できます。この設定は攻撃の同時実行数を制御します。リクエストを調整し、攻撃時間を短縮するのに役立ちます。nginxのような非常に高性能なWebサーバーでは、同時実行数を75に設定できました。デフォルトは'30'に設定されています。

クエリ構文の概要

SQLインジェクションの脆弱性に奇妙な癖(特定の文字を含めることができない、ASCII/CHARなどの関数が動作しないなど)がある場合、おそらくカスタムインジェクション構文を使ったスクリプトを書いたことがあるでしょう。BBQSQLはスクリプト作成部分を排除し、カスタムクエリ構文を貼り付けて簡単に悪用する方法を提供します。

クエリ入力では、データベースから情報を抽出するために使用するクエリを構築します。すでに脆弱なパラメータでSQLインジェクションを特定し、成功するクエリをテストしていることを前提としています。

以下はクエリを構築するための例です。

この例では、攻撃者はデータベースのバージョンを選択しようとしています:

root@kitploit:~
vulnerable_parameter'; if(ASCII(SUBSTRING((SELECT @@version LIMIT 1 OFFSET ${row_index}) , ${char_index} ,1))) ${comparator:>}ASCII(${char_val}) WAITFOR DELAY '0\:0\:0${sleep}'; --

クエリ構文はプレースホルダーに基づいており、BBQSQLに攻撃の実行方法を指示します。

攻撃を機能させるには、以下の情報のプレースホルダーを提供する必要があります。これらをクエリに配置すると、bbqSQLが残りを処理します:

${row_index}: ここでbbqSQLに行を反復するように指示します。LIMITを使用しているため、${row_index}の値に応じてn行を表示できます。

${char_index}: サブセレクトからどの文字をクエリするかをbbqSQLに指示します。

${char_val}: bbqSQLに、結果を検証するためにサブセレクトの結果と比較する場所を指示します。

${comparator}: 応答を比較して結果が真か偽かを判断する方法をbbqSQLに指示します。デフォルトでは>記号が使用されます。

${sleep}: これはオプションですが、時間ベースのSQLインジェクションを実行する際に、スリープする秒数を挿入する場所をbbqSQLに指示します。

これらのプレースホルダーのすべてが必要なわけではありません。例えば、半盲のブールベースSQLインジェクションを発見した場合、${sleep}パラメータは省略できます。

HTTPパラメータ

BBQSQLには攻撃のセットアップ時に設定できる多くのHTTPパラメータがあります。最低限、URL、インジェクションクエリを実行する場所、メソッドを指定する必要があります。以下のオプションを設定できます:

  • files
  • headers
  • cookies
  • url
  • allow_redirects
  • proxies
  • data
  • method
  • auth

インジェクションクエリを挿入する場所をテンプレート${injection}を使用して指定します。インジェクションテンプレートがないと、ツールはクエリをどこに挿入すればよいかわかりません。

files

リクエストとともに送信するファイルを指定します。値にパスを設定すると、BBQSQLがファイルのオープン/インクルードを処理します。

headers

リクエストとともに送信するHTTPヘッダー。文字列または辞書で指定できます。例:

{"User-Agent":"bbqsql"} または "User-Agent: bbqsql"

cookies

リクエストとともに送信するクッキーの辞書または文字列。例:

{"PHPSESSIONID":"123123"} または PHPSESSIONID=123123;JSESSIONID=foobar

url

リクエストを送信するURLを指定します。

allow_redirects

HTTPリダイレクトをリクエスト時に追跡するかどうかを決定するブール値。

proxies

リクエストに使用するHTTPプロキシを辞書で指定します。例:

{"http": "10.10.1.10:3128","https": "10.10.1.10:1080"}

data

リクエストとともに送信するPOSTデータを指定します。文字列または辞書で指定できます。例:

{"input_field":"value"} または input_field=value

method

HTTPリクエストのメソッドを指定します。有効なメソッドは次のとおりです:

'get','options','head','post','put','patch','delete'

auth

HTTP基本認証に使用するユーザー名とパスワードのタプルを指定します。例:

("myusername","mypassword")

設定のエクスポート

UIで攻撃を設定した後、設定ファイルをエクスポートできます。ツールを実行するとオプションが表示されます。エクスポートされた設定ファイルはConfigParserを使用しており、読みやすいです。以下に設定ファイルの例を示します:

`[Request Config] url = http://example.com/sqlivuln/index.php?username=user1&password=secret${injection} method = GET

[HTTP Config] query = ' and ASCII(SUBSTR((SELECT data FROM data LIMIT 1 OFFSET ${row_index:1}),${char_index:1},1))${comparator:>}${char_val:0} # technique = binary_search comparison_attr = size concurrency = 30`

これは、攻撃を再開したり、クエリを調整するがすべてのオプションを再設定する手間をかけたくない場合に便利です。

設定のインポート

コマンドラインまたはユーザーインターフェースから設定をインポートすることもできます。コマンドラインから設定をインポートするには、bbqslを以下のオプションで実行します:

bbqsql -c config_file

設定ファイルをコマンドラインまたはユーザーインターフェースから読み込むと、パラメータに対して同じ検証ルーチンが実行され、有効であることが確認されます。

カスタムフック

時には非常に変わったことをする必要があるかもしれません。フィールドに入力する値を暗号化してからリクエストを送信する必要がある場合や、トリプルURLエンコードが必要な場合などです。いずれにせよ、これらの状況では他のツールを使用することが不可能になります。BBQSQLでは、リクエストのさまざまなポイントでツールが呼び出す「フック」関数を定義できます。例えば、リクエストを引数として受け取り、必要な変更を加え、変更されたリクエストをサーバーに送信するpre_request関数を指定できます。

これを実装するには、Pythonファイルを作成し、フック関数を指定します。利用可能な関数名は以下にリストされています。フックファイルでは、好きなだけ少なくまたは多くフック関数を定義できます。次に、メニューのbbqsql_optionsセクションで、hooks_fileの場所を指定します。BBQSQLはこのファイルを取り込み、定義されたフックを使用します。

指定するフック関数は以下の正確な名前を持っている必要があります。そうしないと、BBQSQLがどのフックをいつ呼び出すべきかわかりません。args関数は、HTTPリクエストの作成に使用されるすべての引数を含む1つのパラメータを受け取ります。pre_request関数は、リクエストが送信される前にリクエストオブジェクトを受け取ります。post_request関数は、リクエストが送信された後にリクエストオブジェクトを受け取ります。response関数は、レスポンスがBBQSQLに返される前にレスポンスオブジェクトを受け取ります。

次のフックが利用可能です:

args: Request()に送信される引数の辞書。

pre_request: 送信直前のRequestオブジェクト。

post_request: 送信直後のRequestオブジェクト。

response: Requestから生成されたレスポンス。

これらのフックの動作方法と、hooks辞書の見た目についての詳細は、requestsライブラリのフックに関するドキュメントを参照してください。

フックファイルの例は次のようになります:

root@kitploit:~
# ファイル: hooks.py
import time

def pre_request(req):
    """
    このフックはプレースホルダーを現在時刻に置き換えます
    URLは次のようになっていることを想定しています:
        http://www.google.com?k=v&time=PLACEHOLDER
    """
    req.url = req.url.replace('PLACEHOLDER',str(time.time()))
    return req

バグを見つけたら?

バグ修正や機能リクエストは https://github.com/Neohapsis/bbqsql/ に送信してください。

手伝えますか?

ぜひ! これは完全なSQLインジェクションフレームワークを構築するための素晴らしい出発点になると考えています。自由にコードをフォークし、あなたの変更が有用であればマージします。

名前の由来は?

BBQは絶品であり、SQLインジェクションも同様です!

ツールをダウンロード