当前位置: 首页 > 图文教程 > 网络编程 > ASP > 具有自攻击性的代码

ASP
Server Application Error错误解决思路
ASP教程:在IIS环境下自己设置404页面
ASP代码出现80040e14错误的解决方法
Http_Referer,Server_Name和Http_Host
HTTP_X_FORWARDED_FOR和REMOTE_ADDR
总结的Server.Mappath的用法
巧用ASP脚本命令重启服务器
实现数字字符串的最大值、最小值和平均值
详解ASP脚本的执行顺序
理解认识阿里妈妈淘客系统对外接口通用规范
网站开发者参考:开源ASP网站源码
IIS管理程序Adsutil.vbs修改FTP服务器的PASV端口范围
ASP程序中调用函数Now()异常的问题
流量大的网站不要选择万能空间
网站挂马方式大总结
启动 W3SVC 服务报错怎么解决
Vista系统安装IIS7配置ASP运行环境
Server Application Error 8004EOOF错误
ASP不用模板直接简单生成HTML页面
ASP教程:gb2312和utf-8乱码问题解决

ASP 中的 具有自攻击性的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 125 ::
收藏到网摘: n/a

  具有自攻击性的代码 写出这类代码的程序员如果被点破那么一定会被认为是大脑进水,但是这类的代码已经漫天飞舞甚至成为叶子认为攻击网站的最好手段之一,现看下面的一段代码:
<%set dbr = server.createobject("adodb.recordset")

dbr.open "SELECT * from testapp where id="& request("id") ,session("DS"),1,1

for i = 1 to dbr.recordcount %>

<%=dbr("id")%>-<%=dbr("title")%><br>

dbr.movenext

next 

dbr.close 

set dbr=nothing %>

这段代码是根据输入ID返回ID相关的标题名称,相应的数据库构造脚本为

CREATE TABLE [dbo].[testapp] (

[id] [int] NOT NULL , [title] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL

) ON [PRIMARY]

但是这个脚本并没有任何的安全检查功能,这样的脚本就是一个系统漏洞,先看一下正常脚本的执行情况:在浏览器中正常的敲入地址http://127.0.0.1/testapp/index.asp?id=5


将看到正常的显示结果

图-2 但如果输入特殊的请求,如http://127.0.0.1/testapp/index.asp?id=5;update%20testapp%20set%20id=id%2b%201


这时候这段代码中浏览器并没有任何显示


图-3

好象什么都没有执行,实际上在内部数据就已经变化了,看下面的SQL SERVER的屏幕执行前的数据如图


图-4 执行后的数据,


如图


图-5 可见表中数据ID列全部增加了1,正符合在连接地址栏中巧入的连接http://127.0.0.1/testapp/index.asp?id=5;update%20testapp%20set%20id=id%2b%201

其实对这个连接解码再结合程序可以得到SQL语句 SELECT * from testapp where id=5;update testapp set id=id + 1 连接中的%20是空格的16进制代码%2b是“+”的十六进制代码


因此组成了以上语句。由于其中分号的作用SQL SERVER将一行SQL语句分解成若干行语句执行因此在执行过SELECT * from testapp where id=5语句后再次执行update testapp set id=id + 1语句使ID列增加1 这个后部的update testapp set id=id + 1也可以根据攻击的需要替换成delete 以及 insert甚至在权限允许的条件下可以使用xp_cmdshell执行CMD命令。