注入

王朝百科·作者佚名  2009-12-08  
宽屏版  字体: |||超大  

随着B/S模式应用开发的发展,使用该模式编写程序的程序员越来越来越多,但是由于程序员的水平参差不齐,相当大一部分应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想要知的数据,这个就是所谓的SQLinjection,即sql注入式攻击。

脚本注入攻击者把SQL命令插入到WEB表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,在某些表单中,用户输入的内容直接用来构造动态的SQL命令,或作为存储过程的输入参数,从而获取想得到的密码或其它服务器上的资料。

注入原理:

所谓的SQL(结构化查询语言)注入,简单来说就是利用SQL语句在外部对SQL数据库进行查询,更新等动作。首先,数据库作为一个网站最重要的组件之一(如果这个网站有数据库的话),里面是储存着各种各样的内容,包括管理员的账号密码,

网站的配备内容等,一旦里面的数据被某人获得或者是被修改,那么那个人就可能获得整个网站的控制权。至于怎么获得这些数据,那些MSSQL弱口令的就不说,剩下的最有可能就是利用注入漏洞。

当用户在网站外部提交一个参数进入数据库处理,然后把处理后的结果发给用户,这个是动态网页最常见的,但是这个参数一旦没有被过滤,使得我们自己构造的sql语句也可以和参数一起参与数据库操作的,那么SQL注入漏洞就会产生

一个网站上存在外地数据提交是很正常的,一般都是用参数接受(request),然后再进行处理,而涉及于数据库操作的却占了很大的一部分。例如下面的例子

http://www.poruin.com/1.asp?cs=1

这个地址包含了参数1,以及传递该参数的变量cs,意思就是,在http://www.poruin.com的文件夹里有一个1.asp文件,1.asp文件内部存在cs变量,作用就是接受有外部提交的一个参数:1,也可以是其他的,那么在1.ASP这个文件里的相关代码一般

就是这样:

…………

cs=Request("id")

sqlsever="select * form xx where id='"&cs&"'"

……………

用request读取id变量的内容,然后进行SQL查询,语句就是 select * from xx where id = 1,这个比较好理解吧,但是我来用最经典的注入漏洞检测方法,在参数后面加上’,地址就变成http://www.poruin.com/1.asp?id=1'

查询语句就变成了sqlserver=select * from xx where id = ‘1’' ,后面多了一个',出现闭合问题,如果没有过滤的那就会提示没有闭合的’。

利用小竹贡献的and 1=1和and 1=2 原理也还是一样

select * from xx where id = 1 and 1=1

select * from xx where id = 1 and 1=2

1=1是成立的,而1=2是不成立的,那么查询结果就是: 真 and 假 最终结果是错

所以,第一个地址返回正常,第二个地址返回不正常,这样就可以检测出有没有漏洞。

再者参数后面跟着的是SQL语句呢,例如更新语句:

Update admin set passwd = 'poruin' where user= 'admin'

url就是:http://www.poruin.com/1.asp?id=1 and update admin set passwd = 'poruin' where user= 'admin'

查询语句就是:select * from xx where id = 1;and update admin set passwd = 'poruin' where user= 'admin'

存在此漏洞的不但是asp access, asp sql server, php mysql ,jsp oracle等都有类似问题。

经济学上的注入:

注入:指新加入经济体的收入流量。与之相对应的是漏出,指脱离经济循环的收入流量。譬如,个人或企业在开户银行增加储蓄存款,对于宏观经济来说是漏出;而银行将这些存款放贷出去,借款者又将其用于实业投资,这就是注入。

如注入大于漏出,则经济活动规模会扩张;

如注入小于漏出,则经济活动规模会收缩。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有