未对用户可控的带入数据库查询的参数进行严格的过滤、转义和限制,导致用户与数据库进行交互时,使用特殊命令进入数据库进行非法的增删改查等操作。
数据与代码未严格分离。
未对用户提交的参数进行严格的过滤和限制,导致用户使用特殊命令带入到原有sql命令中,改变了原有命令语义,且成功被数据库执行。
带有数据传输的地方。
Access、Mysql、MSsql、Oracle、Postsql、Redis、Sqlite、Mongodb、DB2
2.1 select
$a=$_GET['a'];
select * from 表 where 字段='$a';
?a=值' []
联合注入、报错注入、堆叠注入、布尔/延时
2.2 insert
$a=$GET_['a'];
$b=$GET_['b'];
insert into 表(字段1,字段2) value('$a','$b');
?b=值' []
报错注入、堆叠注入
2.3 update
$a=$_GET['a'];
$b=$_GET['b'];
update 表 set 字段1='$a',字段2='$b' where 字段=值;
?b=值' []
报错注入、堆叠注入
2.4 delete
$a=$_GET['a'];
delete from a where 字段='$a';
报错注入、堆叠注入