这几天做了不少SQL注入题,对SQL注入有点体会,所以写写自己的学习历程与体会。
什么是SQL注入
SQL注入就是指web程序对用户输入的数据的合法性没有进行判断,由前端传入的参数带着攻击者控制的非法语句,攻击者可以通过构造不同的数据库查询语句来实现对数据库的任意操作。
SQL注入原理
SQL注入产生的原理:
(1)由前端传入的参数是可以控制的。
(2)传入的参数可以拼接到SQL语句,并且能对数据库进行有效操作。
当你输入参数id=1时,数据库执行的代码如下 select * from users where id = 1 数据库可以正常执行操作。
当你输入参数id=1'时,数据库执行的代码如下 select * from users where id = 1' 这不符合数据库语法规范,所以会报错。
当你传入参数1 and 1=1时,数据库执行的代码如下 select * from users where id = 1 and 1=1 因为1=1和1都为真,所以页面会返回id=1的结果。当你传入 1=2时 ,1=2为假,所以数据库会报错。
一般满足上面这两种条件的都可能存在注入漏洞,因此开发人员要对传入的参数进行过滤。
而且随着技术的发展,注入与反注入的技术都在不断升级,所以各种各样的注入漏洞被发现利用,然后被修复,新的漏洞再被发现,所以对于安全工程师来说,掌握最新的漏洞是非常重要的。