* 注入漏洞攻击利用的重点是具有交互功能的使用数据库的动态站点
* 注入漏洞攻击的技术重点是在服务器端执行攻击者的SQL语句
* 注入漏洞攻击的方法重点在于动态网页存在不安全的SQL生成语句
本文内容重点在于介绍注入漏洞的攻击过程。
在很多动态web应用中,会提供给用户输入的接口,并且根据用户的输入来生成数据操作的SQL语句。比如一个简单的用户登录对话窗。
所谓注入漏洞,是指在上述描述的部位,利用输入的数据参与执行的原理,输入恶意的内容,进而该恶意内容可被执行。举例如下:
在一个登录界面中,用户要输入自己的ID号和密码来完成登录过程,生成的SQL可能是如下这个样子:
select * from t_users where user_name=' + 用户输入的ID + ' and user_pwd=' + 用户输入的密码 +'
一个非法的窥探者,在用户ID输入框中输入 00' or '1'='1 并在密码框里输入00,生成的整个SQL就变成:
select * from t_users where user_name='00‘ or '1'='1' and user_pwd='00'
这样,查询是有结果的,对于不严密的判断,非法用户得以进入该系统。
上面的例子展示了非法登录的手段。如果用于产品检索,则一个普通用户权限的用户可以用非法手段获得全部产品列表。更严重的情况是非法用户利用这种漏洞执行系统存储过程,建立系统用户,打开系统限制,完成系统登录。
如果我们利用数据库存储过程来完成检索,利用参数传递的方式来传送参数,就可以避免这种情况。