猪猪 2008-3-10 16:58
冠龙科技企业网站管理系统v8.0"系统的cookie注入的分析
[align=left][align=left][font=宋体][size=10pt]在系统shownews.asp文件中[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<!--#Include File="inc/Check_Sql.asp"--> [color=red](调用Check_Sql.asp文件)[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<!--#include file="inc/conn.asp"-->[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<!--#include file="inc/Skin_css.asp"-->[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<!-- #include file="inc/config.asp" -->[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<!-- #include file="Head.asp" -->[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<!--#include file="inc/guanlongidc.asp"-->[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<%owen=request("id")%> [color=red](获取客户提交的变量,并赋值给owen,并没过滤,也没有指定采用那种方式提交)[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt].........省略代码[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<% [/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]Set rsnews=Server.CreateObject("ADODB.RecordSet") [color=red]创建对象[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]sql="update news set hits=hits+1 where id="&cstr(request("id")) [color=red](修改news表中阅读次数)[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]conn.execute sql[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]sql="select * from news where id="&owen [color=red](进行SQL查询)[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]rsnews.Open sql,conn,1,1 [color=red](执行SQL语句)[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]title=rsnews("title")[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]if rsnews.eof and rsnews.bof then[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]response.Write("数据库出错")[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]else[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]%>[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]在[color=red]Check_Sql.asp文件中:[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]<% [/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥="
[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt] [/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt](在这部份定义get非法参数,使用"∥"号间隔)
[/size][/font][font=宋体][size=10pt][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt] [/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]Form_Badword="'∥%∥&∥*∥#∥(∥)∥="
[color=red](在这部份定义post非法参数,使用"∥"号间隔)[/color][/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]..............[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]----- 对 get query 值 的过滤.[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]....................[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt] [/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]-----对 post 表 单值的过滤[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt]....................[/size][/font][/align][/align][align=left][align=left][font=宋体][size=10pt] [/size][/font][/align][/align][font=宋体][size=10pt]从上面代码分析后,来整理下思路:参数id没有被过滤就被带到SQL语句中查询,这是注入漏洞产生的原因,虽然程序引入了防注入程序,阻止了常用的SQL语句使用,但只对客户采用GET和POST方式提交的数据进行限制,而没有限制客户使用Request.cookie方式提交的数据.[/size][/font]
djyangmaowei 2008-5-6 21:49
那怎么用呢?