SQL注入攻击及其防范检测技术研究(2)
(3)危害性大,SQL注入攻击成功后,轻者只是更改网站首页等数据,重者通过网络渗透等攻击技术,可以获取公司或者企业机密数据信息,产生重大经济损失。
2 SQL注入攻击的实现原理
2.1 SQL注入攻击实现原理
结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。
SQL注入攻击主要是通过构建特殊的输入,这些输入往往是SQL语法中的一些组合,这些输入将作为参数传入Web应用程序,通过执行SQL语句而执行入侵者的想要的操作,下面以登录验证中的模块为例,说明SQL注入攻击的实现方法。
在Web应用程序的登录验证程序中,一般有用户名(username)和密码(password)两个参数,程序会通过用户所提交输入的用户名和密码来执行授权操作。其原理是通过查找user表中的用户名(username)和密码(password)的结果来进行授权访问,典型的SQL查询语句为:
Select * from users where username='admin' and password='smith’
如果分别给username和password赋值“admin' or 1=1--”和“aaa”。 那么,SQL脚本解释器中的上述语句就会变为:
select * from users where username=’admin’ or 1=1-- and password=’aaa’
该语句中进行了两个判断,只要一个条件成立,则就会执行成功,而1=1在逻辑判断上是恒成立的,后面的“--”表示注释,即后面所有的语句为注释语句。同理通过在输入参数中构建SQL语法还可以删除数据库中的表,查询、插入和更新数据库中的数据等危险操作:
(1)jo'; drop table authors—如果存在authors表则删除。
(2)' union select sum(username) from users—从users表中查询出username的个数
(3)'; insert into users values( 666, 'attacker', 'foobar', 0xffff )—在user表中插入值
(4)' union select @@version,1,1,1--查询数据库的版本
(5)'exe
相关新闻>>
- 发表评论
-
- 最新评论 更多>>