破解别人的asp木马密码的方法

来源:百度文库 编辑:神马文学网 时间:2024/04/28 11:18:14
如果得不到asp源代码,那么可以说对破解密码,我毫无胜算。有位中安网培的朋友说他得到了一个web的权限, 但是无法修改主页,发现其中已经有个asp木马,但密码是经过加密的。那么就有了这篇动画了。好了,废 话太多了,那么,作好准备,这次的解说将会相当的漫长。 asp木马登陆密码验证关键代码如下: if Epass(trim(request.form(password)))=q_ux624q|p then response.cookies(password)=8811748 ... 很明显,用的是Epass函数把输入的密码进行加密,然后将得到的密文和原密文进行比对。如果稍有点编程基础 的话,特别是VB,那么Epass里的加密算法将一目了然。如果没有,那么,没关系,相信经过我的讲解,你很快就会 明白。函数中,保存密码的变量是pass。pass&zxcvbnm,./ 将pass里的内容与zxcvbnm,./相连接得到一个新的字符 串。left(pass&zxcvbnm,./,10)取前10位。StrReverse函数将得到的10位字符串次序颠倒。len(pass)获得密码的 长度。下面是一个循环。将得到的字符串中的每一位的Ascii码-密码长度+取整(字符所在位*1.1),然后将得到的数值 转换成字符重新连接。最后将得到的字符串中有字符的全部替换成B,这样密文的产生了。如果我们提取加密算法用 自己的密文替换原有密文,那么相映的密码也会变成你的密码。但我说过了,这并不是真正意义上的破解。 假如我们输入的是love,加密过程如下 love lovezxcvbnm,./ 连接 lovezxcvbn 取前10位 nbvcxzevol 次序颠倒 n 110(ascii)-4(位数)+int(1(位置)*1.1)=107 107的ascii码为k,依次类推,最后密文: k`ucy|hzts 我们可以通过密文和加密算法反推出密码。从算法的最后一步开始往上推。最后一步用B替换所有,有没必要将B 替换回呢,答案是否定的。只要我们能得到最后的密文,密码不一样也是有可能的。如果有10个B,那原密码的个数 就2的10次方个,虽然原密码只有一个,但是1024个密码都是正确的。如果要完美破解的朋友,可以自己试着编写全部 的组合。 那么这步可以忽略了。 上面的算法很清晰 chr(asc(mid(temppass,j,1))-templen+int(j*1.1)) 我们只要简单的将+和-换一下就可以了。 chr(asc(mid(temppass,j,1))+templen-int(j*1.1)) 但是还有一个问题,我们事先不知道密码的长度,没关系,幸好密码在1-10位之间,不太长。 那么我们可以用一个1到10的循环求出所有可能的密码,再将其用StrReverse函数次序颠倒。 那么最后得到的密码我们该怎么确定哪个就是呢。可以根据pass&zxcvbnm,./,看除密码最后是否有zxvbnm,./的前几位。 那么这就是真正的密码。那么如果密码是10位,将是永远正确的,因为后面不存在连接。所以我们可能得到两个答案。 以下便是我编写的解密函数 function Ccode(code) for templen1=1 to 10 mmcode= for j=1 to 10 mmcode=mmcode+chr(asc(mid(code,j,1))+templen1-int(j*1.1)) next Ccode=strReverse(mmcode) response.write 密码&templen1&:&Ccode& if mid(Ccode,templen1+1,10-templen1)=left(zxcvbnm,./,10-templen1) and templen1<>10 then result=left(Ccode,templen1) next response.write 最后密码:&result end function 好了,算法可能在这么短的时间内无法完全掌握,这是正常的,同样,密码10永恒正确的。那么我们将asp里原有的密文拿过来看看,会有什么结果。好,两个密码都可以登陆。