1. ホーム
  2. データベース
  3. その他のデータベース

タイプインジェクションとコミットインジェクションのSQLインジェクションチュートリアル

2022-01-22 23:06:08

パラメータの種類

ここで説明するパラメータは、ソースコードにインジェクションが存在する場所です。

パラメータの種類には、数値、文字、search、jsonなどがあります。

SQL文の干渉記号のうち、以下のものがあります。', ", %, ), }, などです。フィルタリングでは、まずこれらの記号を閉じることを検討してからインジェクションテストを実行します。

例えば、phpのコード。

$name = $_GET['x']
$sql = "select * from user where name='$name'";

ご要望に応じて

http://www.xxx.com/x.php?id=xxx and 1=1

Return sql statement.
select * from user where name='xxx and 1=1'

Filter by.
http://www.xxx.com/x.php?id='xxx and '1'='1

多くのサイトには検索機能があり、その検索ボックスには、% を注入する際に閉じる必要がある注入口がある場合があります。

sqlで検索します。

select *from user where name like '%parameters%';

明示的なリクエスト方法

リクエストメソッドとは GET、POST、COOKIE、REQUEST、HTTPヘッダなどです。

GETリクエスト: urlを使った直接のリクエスト

POSTリクエスト:リクエストの本文を介したリクエスト

COOKIE:クッキーはリクエストヘッダの一部であり、サイトによってはクッキーを通じてリクエストされたデータを注入することができる

REQUEST:GETリクエスト、POSTリクエストのいずれか

HTTPヘッダ。HTTPリクエストヘッダーフィールドのパラメータ値の中には、サーバー上のデータベースの一部の情報にアクセスできるものがあり、インジェクションされる可能性があります

1. GET リクエスト

sqlilabs レベル 5.

パラメータに何かあることを示す、submitへの応答がない、ソースコードを確認する

一重引用符で囲まれたパラメータが見つかりましたので、閉じる必要があります。

コミットに対する応答がなく、無応答のインジェクションであることを示すので、とりあえずそれをカバーし、無応答のインジェクションメソッドをフォローアップします。

sqlilabs レベル6

レベル6はまだ見返りがない

ソースコードを見る

二重引用符で囲まれたパラメータが見つかり、二重引用符でフィルタリングする場合

2. POSTリクエスト

sqlilabs レベル11

パケットを手にして、試してみてください。

がポストリクエストメソッドである場合は、 インジェクション用のポストリクエストメソッドを直接作成します。

3. COOKIEインジェクション

sqlilabs レベル20

逃走、Cookieインジェクションの試み。

テストはうまくいく。

4. httpヘッダーインジェクション

sqlilab レベル18

ipとUser Agentの表示、ソースコードを解析すると、unameとpasswdのパラメータはここで処理されますが、制御するグローバル変数として、ipとuser-agentが新たに用意されています。

User-Agent の内容を xxx,send package に変更します。

User-Agentの修正によるエラー報告インジェクション。

概要

この記事は、SQLインジェクションチュートリアルの種類と提出注入を紹介し、より関連するSQLインジェクションの種類と提出内容は、スクリプトハウスの前の記事を検索するか、次の関連記事を閲覧し続けることを願って、あなたは将来的にもっとスクリプトハウスをサポートしています!.