执着成就未来 技术成就梦想
文字横幅以及760*60黄金广告位置招租,欢迎恰谈! 广告业务联系QQ:8019399 声明:在本站所投放广告内容均与本站立场无关!

您现在的位置: 中国安全在线 >> 攻防技术 >> 菜鸟学习 >> 文章正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
三步找回被删并清空了回收站的文件
新手想做网吧技术网管应会些什么
如何维护和优化局域网技巧
查看自己IP地址的四种方法
实战经验 组建维护一个30人局域网
巧用支付宝 免交手续费
教你防范QQ隐身被检测(图)
入侵Windows XP的几个常用方法
经验谈:跳板攻击入侵技术实例解析
上网被ISP劫持?介绍一些好用的DNS域
破别人ASP木马密码的方法
作者:佚名 来源:安全在线 更新时间:2008-10-1 7:11:22 【字体:
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论

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

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

  破解目的:没事破着玩。

  如果得不到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,加密过程如下:

  lovelovezxcvbnm,./ ’连接lovezxcvbn

  ’取前10位nbvcxzevol

  ’次序颠倒n110(ascii)-4(位数)+int(1(位置)*1.1)

  =107107的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 10mmcode=""for j

  =1 to 10mmcode=mmcode+chr(asc(mid(code,j,1))+templen1-int(j*1.1))

  nextCcode=strReverse(mmcode)response.write

  "密码"&templen1&":"&Ccode&""if mid(Ccode,templen1+1,10-templen1)

  =left("zxcvbnm,./",10-templen1)

  and templen1<>10 thenresult

  =left(Ccode,templen1)nextresponse.write "最后密码:"&resultend function

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

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力

文章录入:ls1238    责任编辑:ls1238 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系方式 | 友 情链接 | 关于我们 | 网站留言 |
    Copyright ?2003-2008 www.cnsafer.com All Rights Reserved.
    如有意见请与我们联系 Email:admin#mail.cnsafer.com 联系QQ:8589101
    中国安全在线友情提示:建议使用IE6.0或以上版本, 分辩率1024*768进行浏览
    敢想 敢做 挑战自我 努力做最好 打造最优秀的新手成长 第一起跑线
    中网科技有限公司 技术支持 鄂ICP备05006475号