目次
1. はじめに
2. sqlmap の時間ベースのインジェクションの簡単な分析
3. ソース コードの詳細な分析
閉鎖注入点の前の文字が注入可能かどうかの鍵となります。
5.1 方法 1
前回の awvs の注入を参考に、より分かりやすい検出方法を考えました。ペイロードを注入しない通常のテスト 6 回の消費時間を取得し、その平均値をネイティブ リクエスト時間 (ori_time) として計算します。
sqlmap コードをもう一度見てください。理解できない数学的問題が使用されています (詳細)
ホームページ 運用・保守 安全性 sqlmap 時間ベースの注入の分析を実装する方法

sqlmap 時間ベースの注入の分析を実装する方法

May 12, 2023 pm 12:10 PM
sqlmap time-based

1. はじめに

SQL インジェクションを検出するにはどうすればよいですか?

私の答えは次のとおりです。当事者 A がセキュリティを行っている場合、SQL インジェクションの検出は比較的簡単に実行できます。

1) エラー挿入の検出。

2) 誤検知が比較的多いため、ブール値エラー レポートを挿入しないでください。

3) 時間ベースのタイムインジェクションを実行し、運用とメンテナンスに連絡して、スローログデータベースの記録、スリープの監視、ベンチマークキーワードの監視を行います。スリープの小数点にスキャンタスクのID番号を追加できます。時間、位置決めに便利です。 (追記: この方法で SQL インジェクションの 99% を見つけることができます)

したがって、時間ベースのタイム インジェクションを実行するときは、時間エラーを非常に厳しく制限します。ただし、@chengable はパーティ B でセキュリティ関連の作業を行っており、時間ベースの時間注入は通常は不可能です。主に最初にインジェクションポイントの存在をフィルタリングし、その後 sqlmapapi.py を検出していることがわかります。また、以前にテストに sqlmap を使用しました。遭遇した問題は、多くの誤検知と長いスキャン時間でした。その後、sqlmapapi.py を試しました。問題は、スキャン時間が長すぎることと、json 形式のインジェクションをサポートしていないことでした (詳細) 。ただし、sqlmap の時間注入は比較的正確です。sqlmapapi.py を使用したくない場合はどうすればよいでしょうか?ここでは、sqlmap の時間ベースの注入ロジックを削除します。

2. sqlmap の時間ベースのインジェクションの簡単な分析

不満: sqlmap のコードは標準化されておらず、醜く、大きいです。ある人に sqlmap のソースコードを読んで勉強することを勧められたのですが、今思えば早々に諦めていました。

したがって、怠け者でソース コードを見たくない場合は、 --technique=T -v 3 を追加して、最初に sqlmap 検出ペイロードを確認してください。

如何实现sqlmap time-based inject的分析

如何实现sqlmap time-based inject的分析

如何实现sqlmap time-based inject的分析

スクリーンショットからわかるように、私は怠け者でいくつかの方法を見つけたようです:

最初に、sqlmap は sleep の注入ペイロードを詰め込みました:

最初に sleep(5) を詰め込み、実行されたことが判明した後、次に sleep(0) を詰め込み、最後にもう一度スリープ(5)に詰め込みました。

次に、推測します。一般的なチェックの考え方は、最初に sleep(5) を実行し、2 番目の遅延が成功した場合は sleep(0) を実行することです。遅延が見つからない場合は、sleep(5) を続行します。遅延が再び成功すると、注入がある可能性があることを示すリマインダーが表示されます:

如何实现sqlmap time-based inject的分析

最後に、非常に賢いのは、誤検知を防ぐために、sqlmap は if 判定条件を使用して誤検知を除外していることです。上の図から、sqlmap は式が真であるかどうかを 2 回テストし、式が真でなくなるかどうかを 2 回テストしていることがわかります。現在の状況に基づいて誤検知を判断するための 2 番目の遅延まで。

3. ソース コードの詳細な分析

ソース コードに戻って見てみましょう: 前のキーワードのいくつかに基づいて、コードを直接見てみましょう。 。たとえば、検索前に * と思われる #** が表示され、最初のステップのコードが表示されます:

sqlmap/lib/controller/checks.py:

如何实现sqlmap time-based inject的分析

ここで私が見つけたものは、私が以前に推測したものに非常に近いです。

ペイロードの場所、特に if 条件を含むペイロードを探すか、キーワード クエリを使用して、ここで見つけます:

sqlmap/xml/payloads/time_blind.xml:

如何实现sqlmap time-based inject的分析
#各 if 条件のペイロードがベクトル フィールドにあることがわかります。

4. 閉鎖

閉鎖注入点の前の文字が注入可能かどうかの鍵となります。


観察された tools/sqlmap/xml/boundaries.xml なので、ここでさまざまなクロージャーの状況も参照する必要があります:

如何实现sqlmap time-based inject的分析 5.遅延があるかどうかの判定

5.1 方法 1

前回の awvs の注入を参考に、より分かりやすい検出方法を考えました。ペイロードを注入しない通常のテスト 6 回の消費時間を取得し、その平均値をネイティブ リクエスト時間 (ori_time) として計算します。

注入時間が sleep(5) の場合、現在時刻から ori_time を減算して sleep_time とします。 sleep_time が 4 未満の場合、遅延は発生していないとみなされます。 (ここでは、ori_timeがネットワークの影響を受けて大きくなることを考慮して、閾値を4秒に調整しています)

注入時間がsleep(0)の場合、現在時刻からori_timeを減算してsleep_timeとします。 sleep_time が 2 より大きい場合は、遅延に誤ったアラームがあることを意味します。

5.2 方法 2

sqlmap コードをもう一度見てください。理解できない数学的問題が使用されています (詳細)


フォローアップ: リクエスト。 queryPage --->wasLastResponseDelayed ロジックは、ペイロードを挿入せずに 30 個の通常テストの消費時間を取得し、kb.responseTimes に入れるというものであることがわかります。標準偏差を偏差として 30 倍計算し、偏差に基づいて最も遅い応答時間を lowerStdLimit として計算します:

如何实现sqlmap time-based inject的分析

30回の平均にTIME_STDEV_COEFF*標準偏差(偏差)を加えた値で、TIME_STDEV_COEFFは7に設定すると99.9999999997440%の判定精度が得られます。

最終的に現在のリクエストの消費時間が lowerStdLimit より大きいかどうかを判定します。大きい場合は遅延が発生していることを意味し、未満である場合は遅延がないことを意味します (また、 lowerStdLimit は 0.5 秒未満、 lowerStdLimit には 0.5 秒かかります)。

感情は方法 1 を選択するべきだと言い、理性は方法 2 を選択するべきだと言います。私は引き続き方法 2 を選択し、注入点を測定しました (詳細)。非常に安定したスキャンにより、インジェクションの脆弱性が見つかりました。

以上がsqlmap 時間ベースの注入の分析を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Sqlmap 自動インジェクションのサンプル分析 Sqlmap 自動インジェクションのサンプル分析 May 13, 2023 pm 03:31 PM

sqlmap を使用して dvwa へのインジェクションを自動化し、dvwa レベルを低く設定し、dvwa の SQLInjection (SQLInjection(Blind)) を開き、ブラウザーのデバッグを開き、ユーザー ID を入力して送信し、インターセプトされた要求を表示します。これは GET リクエストである URL「http://192.168.1.222:8089/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#」であることがわかります。これをテストするために salmap に直接入れます。 - u コマンド -u"http://192.168.1.22

sqlmap を使用して問題を分析する方法 sqlmap を使用して問題を分析する方法 May 27, 2023 pm 01:07 PM

0x00 概要 最近、sqlmap インジェクション テストを使用しているときに、上位バージョンの sqlmap ではインジェクションを検出できないが、下位バージョンではインジェクションを検出でき、誤検知ではなくデータが枯渇するという奇妙な現象に遭遇しました。比較テストを行って sqlmap のソース コードを表示したところ、2 つの小さな穴が見つかりました。 0x01 シナリオ再現注入ポイント形式: json..."whereparams":[{"name":"keyWord","value":"test"}]} 注入可能なパラメータ:valuesqlmap コマンド:pythonsqlmap.py-rsqlpk.txt–フラッシュ-session-vvsqlmapv1.2.11 は を注入できません

SQLMap と SQLi インジェクション防御を分析する方法 SQLMap と SQLi インジェクション防御を分析する方法 May 11, 2023 pm 06:37 PM

パート 1: Sqlmap の使用 1.1 sqlmap の概要 1. SQL インジェクションの基本的なステートメントをいくつか説明しましたが、手動インジェクションは非常に面倒です. データを取得するには、強力な SQL インジェクション ツールである sqlmap を使用できます 2. sqlmap の概要 (1) # sqlmap は、SQL インジェクションの脆弱性とデータベースに接続されているサーバーを自動的に検出して悪用できるオープンソースの侵入テスト ツールです。非常に強力な検出エンジン、複数の機能を備えたペネトレーション テスター、データベース フィンガープリンティングによる基盤となるファイル システムへのアクセス、および帯域外接続を介したコマンド実行を備えています。公式 Web サイト: sqlmap.org(2)#サポートされるデータベース: MySQL、Oracle、PostgreS

SQLMAPのオニオンモードプロキシとは何ですか? SQLMAPのオニオンモードプロキシとは何ですか? May 26, 2023 am 09:56 AM

外部 Web サイトへの侵入テストを行う必要があるため、ほとんどの Web サイトではアクセス頻度制御が行われており、この頻度を超えると、その IP は直接禁止されます。特に SQLMAP の実行中はさらに「おばさんっぽく」なり、SQLMAP の実行が終了する前にエラーが報告されて終了します。そこで SQLMAP のプロキシ モードについて勉強し始めたのですが、SQLMAP には通常のプロキシ (HTTP プロキシ) とオニオン プロキシの 2 つのプロキシ モードがあります。当初は通常のエージェントの適用について書きたかったのですが、Baidu はこの記事が十分に詳細であると判断し、くだらない話をやめました。 Sqlmap 拡張 - 外部 IP プロキシ プールの実装 オニオン プロキシに焦点を当てましょう。当初、オニオンがインジェクションに直接使用されていたとき、「赤おばさん」レポートはありませんでした。その後、侵入 Web サイトの数が増加するにつれて、

sqlmap 時間ベースの注入の分析を実装する方法 sqlmap 時間ベースの注入の分析を実装する方法 May 12, 2023 pm 12:10 PM

1. はじめに SQL インジェクションを検出するにはどうすればよいですか?私の答えは、「当事者 A がセキュリティを行っている場合、SQL インジェクションの検出は比較的簡単に実行できる」です。 1) エラー挿入の検出。 2) 誤検知が比較的多いため、ブール値エラー レポートを挿入しないでください。 3) 時間ベースのタイム インジェクションを実行し、低速ログ データベース レコードを作成するための操作とメンテナンスに連絡し、スリープを監視し、ベンチマーク キーワードを監視します。位置付けを容易にするために、スリープ時間の小数点にスキャン タスクの ID 番号を追加できます。 (追記: この方法で SQL インジェクションの 99% を見つけることができます) したがって、時間ベースのタイム インジェクションを行う場合、私は時間エラーを非常に厳しく制限します。ただし、@chengable は、t に基づいて、パーティ B でセキュリティ関連の作業を行っています。

sqlmap _dns インジェクション構成方法とは何ですか? sqlmap _dns インジェクション構成方法とは何ですか? May 12, 2023 pm 12:25 PM

インターネット上には、sqlmap の DNS インジェクションに関する関連記事が少なすぎます。--dns-domain パラメーターについて簡単に紹介しているだけです。関連する実用的な記事は曖昧であるか、一度に言及されており、混乱を招きます (主に不正直、重要なのはまだビッグボスではありません)。そこでネット上の方法を参考に再度やってみました。準備する必要があるものには、1 つの sqlmap、Windows ブラインド インジェクション、2 つのドメイン名、および外部ネットワーク サーバーが含まれます。ある時、何かをしていた時にタイムブラインドインジェクションに出会い、たまたまWindowsマシンだったのでDNSインジェクションの方法を思い出しました。開始する前に、sqlmap の --sql-shell コマンドを使用して、DNS インジェクション ペイロードをテストする予定です。まず、burpsuite に移動します。

sqlmap処理署名暗号化の考え方 sqlmap処理署名暗号化の考え方 May 14, 2023 am 11:52 AM

同社のアプリをテストしたところ、すべてのパラメーターの内容に 32 ビット文字が追加され、最終的に MD5 暗号化が実行されていることがわかりました。 APPの処理プロセスでは最初に署名が正しいかどうかを検証するため、署名検証に失敗するとデータベースにまったく入れなくなりますが、それをテストするためにSQLMAPを使用するために、プロキシデータ用のスクリプトを作成しました。データ パケットでは、そのパラメータの内容と 32 文字の暗号化された置換が実行されます。注: このスクリプトは、暗号化プロセスを知ることができたり、フロントエンド JS の暗号化方式を取得したりできるため、企業の内部システムに適しています。まず、会社のシステムをシミュレートするために、Django を使用して POST ID とトークンを取得し、カスタムの暗号化単語を追加するプログラムを作成しました。

sqlmapGetshellの使用方法 sqlmapGetshellの使用方法 May 13, 2023 pm 06:25 PM

sqlmap はファイルの読み取りと書き込みを行います。 –file-read: バックエンド データベース管理システムのファイル システムからファイルを読み取ります。 –file-write: バックエンド データベース管理システムのファイル システム上のローカル ファイルを編集します (ローカルから書き込みます) –file-dest :バックエンド データベース管理システムによって書き込まれるファイルへの絶対パス (書き込みターゲット パス)。SQL インジェクション後に上記のコマンドを使用してシステム ファイルの読み取りと書き込みを行うことができますが、前提条件として読み取りと書き込みができる必要があります。 dba. 権限を持っている場合、読み取りおよび書き込み操作は正常に実行できません。 DVWA を例として、ファイルの読み取りと書き込みを行うために kali の下に DVWA を構築します。ファイルを読み取ります。PHPinfo で関連情報を確認し、-file-r を使用します。

See all articles