生活在常宁,爱上常宁论坛! 广告服务

 找回密码
 免费注册

手机号码,快捷登录

2009查看|8回复

巧妙破解开别人ASP木马密码的方法

[] [复制链接]
发表于 2010-12-28 00:18:57 | 显示全部楼层 |阅读模式
<div id="googlead"> <script language="JavaScript" src="/ad/gg-250.js"></script></div><p><span style="font-size: small">破解目标:破解一</span><span style="font-size: small">ASP</span><span style="font-size: small">/' target='_blank' class='infotextkey'&gt;asp</span><span style="font-size: small">木马的经过加密的登破解asp木马密码陆密码。由于木马里没有版本说明,具体也不知道这木马叫什么名。 </span></p>
<p><span style="font-size: small">破解思路:两种,用加密后的密码替换密文和利用密文及加密算法反解出密码。前者根本算不上真正的破解。 </span></p>
<p><span style="font-size: small">破解目的:没事破着玩。 </span></p>
<p><span style="font-size: small">如果得不到asp源</span><span style="font-size: small">代码</span><span style="font-size: small">,那么可以说对破解密码,我毫无胜算。有位华夏的朋友说他得到了一个web的权限,但是无法修改主页,发现其中已经有个asp木马,但密码是经过加密的。那么就有了这篇动画了。好了,废话太多了,那么,作好准备,这次的解说将会相当的漫长。 </span></p>
<p><span style="font-size: small">asp木马登陆密码验证关键代码如下: </span></p>
<p><span style="font-size: small">if Epass(trim(request.form(&quot;password&quot;)))=&quot;q_ux624q|p&quot; then <br />
response.cookies(&quot;password&quot;)=&quot;8811748&quot; <br />
...<br />
&lt;%<br />
end select<br />
function Epass(pass)<br />
temppass=StrReverse(left(pass&amp;&quot;zxcvbnm,./&quot;,10))<br />
templen=len(pass)<br />
mmpassword=&quot;&quot;<br />
for j=1 to 10<br />
mmpassword=mmpassword+chr(asc(mid(temppass,j,1))-templen+int(j*1.1))<br />
next<br />
Epass=replace(mmpassword,&quot;'&quot;,&quot;B&quot;)<br />
end function<br />
%&gt; </span></p>
<p><span style="font-size: small">很明显,用的是Epass函数把输入的密码进行加密,然后将得到的密文和原密文进行比对。如果稍有点</span><span style="font-size: small">编程</span><span style="font-size: small">基础的话,特别是VB,那么Epass里的加密算法将一目了然。如果没有,那么,没关系,相信经过我的讲解,你很快就会明白。函数中,保存密码的变量是pass。pass&amp;&quot;zxcvbnm,./&quot; 将pass里的内容与zxcvbnm,./相连接得到一个新的字符串。left(pass&amp;&quot;zxcvbnm,./&quot;,10)取前10位。StrReverse函数将得到的10位字符串次序颠倒。len(pass)获得密码的长度。下面是一个循环。将得到的字符串中的每一位的Ascii码-密码长度+取整(字符所在位*1.1),然后将得到的数值转换成字符重新连接。最后将得到的字符串中有'字符的全部替换成B,这样密文的产生了。如果我们提取加密算法用自己的密文替换原有密文,那么相映的密码也会变成你的密码。但我说过了,这并不是真正意义上的破解。 </span></p>
<p><span style="font-size: small">假如我们输入的是love,加密过程如下: </span></p>
<p><span style="font-size: small">love<br />
lovezxcvbnm,./ '连接<br />
lovezxcvbn&nbsp;&nbsp;&nbsp;&nbsp; '取前10位<br />
nbvcxzevol&nbsp;&nbsp;&nbsp;&nbsp; '次序颠倒<br />
n<br />
110(ascii)-4(位数)+int(1(位置)*1.1)=107<br />
107的ascii码为k,依次类推,最后密文:<br />
k`ucy|hzts </span></p>
<p><span style="font-size: small">我们可以通过密文和加密算法反推出密码。从算法的最后一步开始往上推。最后一步用B替换所有',有没必要将B替换回'呢,答案是否定的。只要我们能得到最后的密文,密码不一样也是有可能的。如果有10个B,那原密码的个数就2的10次方个,虽然原密码只有一个,但是1024个密码都是正确的。如果要完美破解的朋友,可以自己试着编写全部的组合。 </span></p>
<p><span style="font-size: small">那么这步可以忽略了。 </span></p>
<p><span style="font-size: small">上面的算法很清晰, </span></p>
<p><span style="font-size: small">chr(asc(mid(temppass,j,1))-templen+int(j*1.1)) </span></p>
<p><span style="font-size: small">我们只要简单的将+和-换一下就可以了。 </span></p>
<p><span style="font-size: small">chr(asc(mid(temppass,j,1))+templen-int(j*1.1)) </span></p>
<p><span style="font-size: small">但是还有一个问题,我们事先不知道密码的长度,没关系,幸好密码在1-10位之间,不太长。 </span></p>
<p><span style="font-size: small">那么我们可以用一个1到10的循环求出所有可能的密码,再将其用StrReverse函数次序颠倒。 </span></p>
<p><span style="font-size: small">那么最后得到的密码我们该怎么确定哪个就是呢。可以根据pass&amp;&quot;zxcvbnm,./&quot;,看除密码最后是否有zxvbnm,./的前几位。 </span></p>
<p><span style="font-size: small">那么这就是真正的密码。那么如果密码是10位,将是永远正确的,因为后面不存在连接。所以我们可能得到两个答案。 </span></p>
<p><span style="font-size: small">以下便是我编写的解密函数: </span></p>
<p><span style="font-size: small">function Ccode(code)<br />
for templen1=1 to 10<br />
mmcode=&quot;&quot;<br />
for j=1 to 10<br />
mmcode=mmcode+chr(asc(mid(code,j,1))+templen1-int(j*1.1))<br />
next<br />
Ccode=strReverse(mmcode)<br />
response.write &quot;密码&quot;&amp;templen1&amp;&quot;:&quot;&amp;Ccode&amp;&quot;&lt;br&gt;&quot;<br />
if mid(Ccode,templen1+1,10-templen1)=left(&quot;zxcvbnm,./&quot;,10-templen1) and templen1&lt;&gt;10 then<br />
result=left(Ccode,templen1)<br />
next<br />
response.write &quot;最后密码:&quot;&amp;result<br />
end function </span></p>
<p><span style="font-size: small">好了,算法可能在这么短的时间内无法完全掌握,这是正常的,那么我将在压缩包中附送说明文档和加解密的asp源代码,大家拿回去好好研究吧。同样,密码10永恒正确的。那么我们将asp里原有的密文拿过来看看,会有什么结果。好,两个密码都可以登陆。为测试我在本地假设了个iis,如果本地无法架设web</span><span style="font-size: small">服务器</span><span style="font-size: small">,可以联系本人,用其他语言编写。</span></p>
发表于 2011-1-31 00:51:01 | 显示全部楼层
顶也~  
发表于 2011-1-31 01:46:33 | 显示全部楼层
顶你一下.  
发表于 2011-2-8 16:45:37 | 显示全部楼层
牛牛牛牛  
发表于 2011-2-16 06:35:23 | 显示全部楼层
我也来顶一下..  
发表于 2011-2-17 17:46:56 | 显示全部楼层
好人一个  
发表于 2011-4-3 06:31:05 | 显示全部楼层
谢谢哦  
发表于 2011-4-9 06:54:15 | 显示全部楼层
回答了那么多,没有加分了,郁闷。。  
发表于 2011-5-2 06:58:42 | 显示全部楼层
顶上去  
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

b6广告位招商
快速回复 返回顶部 返回列表