|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
具有自攻击性的代码 写出这类代码的程序员假如被点破那么一定会被认为是大脑进水,但是这类的代码已经漫天飞舞甚至成为叶子认为攻击网站的最好手段之一,现看下面的一段代码: <%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 但假如输入特别的哀求,如http://127.0.0.1/testapp/index.asp?id=5;update%20testapp%20set%20id=id%2b%201 这时候这段代码中浏览器并没有任何显示 好象什么都没有执行,实际上在内部数据就已经变化了,看下面的SQL SERVER的屏幕执行前的数据 可见表中数据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命令。 返回类别: 教程 上一教程: ASP系列讲座(十二)向浏览器发送内容 下一教程: 利用ASP实现对表的分页浏览(下) 您可以阅读与"具有自攻击性的代码"相关的教程: · 动网论坛上传文件漏洞的原理以及攻击的代码实现 · 验证身份证号是否准确的代码 · 出现404页面错误的自动发送邮件的代码 · 用ASP实现的代码批量修改程序,FSO相关 · 连接各种数据库的代码的总结 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |