最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
具有自攻击性的代码(转)--一叶知秋
时间:2022-06-30 11:01:24 编辑:袖梨 来源:一聚教程网
具有自攻击性的代码 写出这类代码的程序员如果被点破那么一定会被认为是大脑进水,但是这类的代码已经漫天飞舞甚至成为叶子认为攻击网站的最好手段之一,现看下面的一段代码:
dbr.open "SELECT * from testapp where id="& request("id") ,session("DS"),1,1
for i = 1 to dbr.recordcount %>
-
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命令。
dbr.open "SELECT * from testapp where id="& request("id") ,session("DS"),1,1
for i = 1 to dbr.recordcount %>
-
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命令。
相关文章
- 我的世界4月17日最新兑换码2026 04-22
- 大千世界2狗逍遥前期伤害套路有哪些 04-22
- 三角洲行动炫彩勇敢者行动怎么做-炫彩勇敢者行动速通攻略 04-22
- 无尽探险队火焰流派玩法攻略 04-22
- 如何找回剪贴板历史 04-22
- 《和平精英》段位变青铜原因解析-封号与赛季机制说明 04-22