什么是SQL注入
SQL注入基础
SQL注入就是指当web用户向后台数据库传递结构化查询语句时,如果影响了数据库的执行能力则构成SQL注入
PHP语句
例子:
$sql="select * from news where id=$_GET['id']";
由于以上代码的参数id可控,并且可以带入数据库执行,所以可以任意拼接字符串进行攻击。
一般分为数字型注入,字符型注入,区别在于闭合问题,当然还有一些常见的注入分类。
如:post注入,cookie注入,延时注入,收索型注入,报错注入等,只是注入的位置不同。
注入漏洞必须满足两个条件:
1.用户参数可控。
2.传入的参数可以拼接到sql语句,并带入数据库执行。
如过没有对参数进行过滤的话 id=1 在数据库中是这样执行的
select * from news where id=1;
如 id=1 and 1=1
select * from news where id=1 and 1=1;
因为1=1为真,所以页面会返回与id=1的结果相同
如果传入的id=1 and 1=2
select * from news where id=1 and 1=2;
因为1=2为假,所以会返回与id=1的结果不同
以上只是简单介绍了下数字型的注入,不用考虑闭合问题,后续内容会更深入!