背景: #EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  
阅读新闻

黑掉PacketStorm论坛

[日期:2007-11-19] 来源:  作者:未知 [字体: ]
 

内容目录: 


-1.问题的范围
-2.SQL攻击的详细解释
-3.解决办法
-4.结论
-5.本文涉及的perl程序


------------------------------------------------------------------------


----[ 1. 问题的范围


    许多应用程序都可以通过SQL来进行攻击。现在许多程序知道了避免使用strcpy(),
并且不把用户数据传递给system()调用,但是很多程序还不知道SQL查询可以被黑客
篡改来达到攻击的目的。


    写一篇技术文章要比写个安全建议麻烦得多,但是技术文章能够全面地解释我是
如何利用wwwthreads程序的漏洞得到PacketStorm论坛管理员权限和将近800个用户密
码的。


----[ 2. SQL攻击的详细解释


    某日,我正在PacketStorm的论坛上浏览,发现这个论坛使用的是wwwthreads。
我突然注意到了URL的参数(URL中’?’后面的部分)。作为一个web安全爱好者,我
对它感到极为好奇。使用试验的攻击方法,我把showpost.pl程序中的’Board=general’
参数改为了’Board=rfp’。提交并发现传回来以下错误信息:


We cannot complete your request. The reason reported was:
Can’t execute query: 
SELECT B_Main,B_Last_Post
FROM rfp
WHERE B_Number=1
. Reason: Table ’WWWThreads.rfp’ doesn’t exist


    可以发现这儿还有一个参数’Number=1’,我们可以推断出查询请求是这样构造的:


SELECT B_Main,B_Last_Post FROM $Board WHERE B_Number=$Number


    如果你读过我在phrack 54上发表过的文章的话(可以到
http://www.wiretrip.net/rfp/p/doc.asp?id=7&iface=2阅读),你就应该明白我要
做什么了。我们不仅可以修改$Board和$Number参数,而且还可以提交额外的SQL命令。
试想一下,如果我们提交的$Board参数是下面的样子:


’general; DROP TABLE general; SELECT * FROM general ’


    那么在服务器端就会转化成:


SELECT B_Main,B_Last_Post FROM general; DROP TABLE general; 
                SELECT * FROM general WHERE B_Number=$Number


    ’;’符号是SQL命令的结束符。通常我们可以使用’#’来使MySQL忽略此行上的其它
内容。但是,’FROM’和’WHERE’是在一个分开的行上,所以MySQL不会忽略它。考虑到
错误的SQL语句会使MySQL忽略运行后面的语句,所以我们至少要提交一个有效的命令。
在本例中,我们提交一个和原始命令相似的generic select命令,理论上的结果应该
是删除general论坛所在的表。

123下一页  GO
阅读:
录入:chaille

推荐 】 【 打印
上一篇:如何入侵指定网站
下一篇:安全检测建立IPC空连接的主机
Google
 
Internet www.zxyf.net
相关文章      
本文评论       全部评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款