客服QQ:250304218 9459803 维修网站群:中华维修网 | 维修资料下载 | 中华维修论坛
新闻资讯 网络学院 电脑维修 办公维修 家电维修 维修视频 维修资料 中维商城 维修论坛
业界硬件办公家电数码
操作系统安全技术软件应用媒体动画图形图像办公系列网络应用
维修基础软件专题CPU/内存故障硬盘专栏显示器鼠标键盘电源/主板故障声卡显卡光储设备网络设备笔记本
导购DIY专区硒鼓加粉打印机复印机传真机 扫描仪一体机
电视维修影音设备家电常识综合电器
  您现在的位置: 中华维修网 >> 网络学院 >> 安全技术 >> 正文
巧妙破解开别人ASP木马密码的方法
作者:佚名 文章来源:本站原创 点击数: 更新时间:2006-12-14 14:33:21

破解目标:破解一asp木马的经过加密的登破解asp木马密码陆密码。由于木马里没有版本说明,具体也不知道这木马叫什么名。

破解思路:两种,用加密后的密码替换密文和利用密文及加密算法反解出密码。前者根本算不上真正的破解。

破解目的:没事破着玩。

如果得不到asp源代码,那么可以说对破解密码,我毫无胜算。有位华夏的朋友说他得到了一个web的权限,但是无法修改主页,发现其中已经有个asp木马,但密码是经过加密的。那么就有了这篇动画了。好了,废话太多了,那么,作好准备,这次的解说将会相当的漫长。

asp木马登陆密码验证关键代码如下:

if Epass(trim(request.form("password")))="q_ux624q|p" then 
response.cookies("password")="8811748" 
...
<%
end select
function Epass(pass)
temppass=StrReverse(left(pass&"zxcvbnm,./",10))
templen=len(pass)
mmpassword=""
for j=1 to 10
mmpassword=mmpassword+chr(asc(mid(temppass,j,1))-templen+int(j*1.1))
next
Epass=replace(mmpassword,"'","B")
end function
%>

很明显,用的是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&"<br>"
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

[NextPage]

好了,算法可能在这么短的时间内无法完全掌握,这是正常的,那么我将在压缩包中附送说明文档和加解密的asp源代码,大家拿回去好好研究吧。同样,密码10永恒正确的。那么我们将asp里原有的密文拿过来看看,会有什么结果。好,两个密码都可以登陆。为测试我在本地假设了个iis,如果本地无法架设web服务器,可以联系本人,用其他语言编写。

 主板维修教材  笔记本维修视频教程  硬盘维修视频教程  芯片级焊接教学视频   电路基础教程   维修工具 
文章录入:91xiukf    责任编辑:91xiu客服 
【字体:
最近更新
· ASP错误代码说明
· ASP错误代码说明
· 关于Adodb.Stream 的使用说明
· 关于Adodb.Stream 的使用说明
· 解决IIS5 HTTP500内部错误
· asp控制xml数据库的6段非常的经典代码
· ASP技术与PHP,CGI,JSP等技术的比较
· 用ASP制作饼图、柱状图等
· FlashMX新特性详解(四)学习资源和软件
· 导入电影的控制
推荐文章
· Windows XP系统被远程入侵
· 在网吧QQ密码被盗
· 浏览一些网页后硬盘被完全共享
· 共享文件后经常死机
· IE无法打开网页
· 病毒导致鼠标不能正常工作
· 病毒导致花屏
· 在Java中获取系统属性
· JAVA MSN机器人主要代码开放
· 计算机等级考试三级网络技术复习提纲
关于中维 | 联系方法 | 付款方式 | 广告服务 | 加入我们 | 帮助中心 | 网站地图 | 友情合作 | 加入收藏 | 设为首页
Copyright (C) 1999-2006 91Xiu.Com, All Rights Reserved 版权所有 中华维修网
全国统一客服热线: 400-658-3058 未开通400地区请拨打0536-3289280 13306362398
客服QQ:250304218 9459803 
 
青州众维科技 版权所有    鲁ICP备05001127号