现在很多网站都采用了通用防注入程序, 那么对于这种网站, 我门是否就束手无策了呢?答案是否定的, 因为我们可以采用cookie 注入的方法, 而很多通用防注入程序对这种注入方式都没有防备。
在讲之前, 我们还是来回顾下ASP脚本中Request对象的知识吧, 上面几讲中都提到Request对象获取客户端提交数据常用的是GET和POST二种方式, 同时request对象可以不通过集合来获得数据, 即直接使用"request("name")"但它的效率低下, 容易出错, 当我们省略具体的集合名称时, ASP是按QueryString, from, cookie, servervariable, 集合的顺序来搜索的, 在request对象成员中集合cookies, 它的意思是"读取用户系统发送的所有cookie值, 我们从第二讲关于"cookies欺骗入侵和原理"中知道, cookies是保存在客户端计算机的一个文本文件, 可以进行修改, 这样一来, 我们就可以使用Request。 cookie方式来提交变量的值, 从而利用系统的漏洞进行注入攻击。
我们首先还是来看看中网景论坛的最新版本"(CNKBBS2007)中网景论坛2007v5.0 "官方下载地址"http://www.cnetking.com/websys2.asp?id=26"发布时间是2007-06-06,打开系统的源代码后,在"user_RxMsg_detail.asp"文件中,有如下代码:
<!--#include file="opendb.asp" -->
(调用opendb.asp文件)
<!--#include file="char.asp" -->
<%
Call CheckUserLogin(username)
Dim action,s,id
id=request("id") (获取客户提交的变量,并赋值给id,并没过滤,也没有指定采用那种方式提交)
if id<>"" then Call IsNum(bid) (这是程序员的出现地方,注意bid<>id)
conn.execute("update cnk_Users_RxMsg set readed=1 where id="&id) '设置已读
rs.open "select * from cnk_users_RxMsg where id="&id,conn,1,3
我们再打开"opendb.asp"文件
<%Option Explicit
Response.Buffer = true%>
<!--#include file="fzr.asp" --> (调用fzr.asp文件)
<!--#include file="cnkdata/dbname.asp" -->
<!--#include file="config.asp"-->
..................
以现它是连接数据库的文件,其中调用了fzr.asp文件,我们再打开fzr.asp文件
<%
'--------版权说明------------------
'SQL通用防注入程序
'Aseanleung
'--------定义部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
Dim fso1,all_tree2,file1,files,filez,fs1,zruserip
If Request.QueryString<>"" Then (对Request.QueryString提交(客户采用GET方式提交)的数据进行判断,并没有指明对其它方式提交的数据进行判断)
'自定义需要过滤的字串,用 "(北联网教程,专业提供视频软件下载)
……