DVBBS7.0---幕后的微笑

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
动网论坛7.0自从发布以来进一步扩大了其在asp论坛领域的声誉和好评,无论是在、性能、性和效率上都比上一个版本有了很大的进步。在读代码的时候给我的唯一感觉就是——美。但是世上没有不透风的墙啊,代码写得再严谨也是会有疏忽的时候。为了找出它的漏洞,我就像是大海捞针一样在茫茫的代码中寻觅,蓦然回首那人却在灯火阑珊处。请跟着我来看一看吧。第一篇发现新大陆CODE  打开Topic.asp文件,翻到第200-212行,内容为:……Subfreetopic()……Fori=1torequest.form("Announceid").countID=replace(request.form("Announceid")(i),"'","")'删除Ifrequest("actiontype")=2ThenSetRs= DVBBS.Execute("selectrootidfrom"& DVBBS.NowUsebbs&"whereparentid=0AndAnnounceid="&id)Ifnot(rs.eofAndrs.bof)Then DVBBS.Execute("deletefromdv_topicwheretopicid="&rs(0)) DVBBS.Execute("deletefrom"& DVBBS.NowUsebbs&"whererootid="&rs(0))FoundID=rs(0)Else DVBBS.Execute("deletefrom"& DVBBS.NowUsebbs&"whereAnnounceid="&id)FoundID=0EndIf……很明显对request.form("Announceid")的值只进行了单引号的过滤,幸好在SQL语句里面不是作为字符串使用,要不然就没有玩的了。要想突破这个单引号的限制非常简单,只要把我们需要用到的字符串用SQLEncoder进行转换一下就可以直接使用了。其基本原理就是在中自动的将varbinary类型的数据转换为varchar类型数据,然而这一点在asp中一般是无法分辨出来的。在接下来的操作中涉及到字符串的部分为了便于理解,我保留了原文。在实际操作中请用SQLEncoder进行转换一下,除非特殊情况不作说明。第二篇动网论坛的小鞋这个文件在动网论坛中是各项用于待审核帖子的操作,发现漏洞的过程为删除待审核帖子(request("actiontype")=2)。但是这项功能只有在开放某一个版面的帖子审核功能的时候才可能用到,而且只有斑竹才能使用,其标志变量为在数据中的Dv_Board.BoardSetting列第4个数。由于此功能默认是关闭的,大部分论坛也不会用到,所以将其评为低危险程度的漏洞。在利用的时候我们可以想像得到Access的功能低下,就仿佛是一个弱智一样,也就没有什么利用价值了,因此我只讨论使用MSSQL数据库的情况。你可能会想,既然如此不就可以利用报错得到管理员的密码德md5密文了吗,这可就错了。在论坛中每一个SQL语句的执行都是通过 DVBBS.Execute这个过程来实现的,相关代码可以在inc/Dv_ClsMain.asp中找到,在这个过程中过滤了dv_admin关键字,起初的时候我还想过用特殊的方法去构造语句,但是全部失败,如果你有什么办法成功了可别忘记告诉我啊。由于Announceid是用request.form取得,再利用的时候就要构造本地提交表单,其内容为:CODE  <formaction="http://目标服务器地址及相对路径/accesstopic.asp?action=freetopic"method=postname=batch><inputtype=hiddenvalue="修改为打开审核功能版面的boardid值"name=boardid><inputname="actiontype"value="2"type=hidden><textareaname="Announceid"cols="100"rows="20"id="Announceid"></textarea><inputname=submitvalue="执行"type=submit></form>只要在满足上述条件的情况下,将表单中的值设置好之后就可以往下看了。第三篇让我们知道自己的权力在取得绝对路径之前先要判断当前数据库用户的权限,这里就遇到了一个问题,无论我们提交的语句是否成立,只要不产生错误,返回的信息都是相同的。你可能已经想到了,就是要将Announceid的值设置为一个已经存在的待审核 1 <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值