SQL注入 - Part 2
- 1.sql注入自动化工具--sqlmap
- 配置环境变量/快捷方式
- 一些sqlmap的常用语句
- 前置SQL知识
- batch批量注入
- 2.sql注入靶场——sqlilabs
- 3.布尔盲注
- 4.基于时间的盲注
- 5.基于报错的注入
- 总结
1.sql注入自动化工具–sqlmap
配置环境变量/快捷方式
最终效果:
一些sqlmap的常用语句
(用来查询数据库、表、字段。-D:指定database,-T:指定表,-C:指定Column)。从上到下依次查询即可获取数据库-表-列-字段。
前置SQL知识
(MID、substr都代表从第几个字符开始,截取几个字符;ORD、ASCII转为ASCII码使得判断的时候不用判断=a,b,c,d…,而是直接递增判断是否等于数字;正则表达式可以有更高级的匹配方式。)
batch批量注入
如果不想要sqlmap中途询问的y/n等可以使用批量注入方式,(比如查询多个url,将这些url放到一个txt中,然后使用sqlmap的时候加一个batch参数)。最终的结果为excel表格。
2.sql注入靶场——sqlilabs
使用的是支持php7的版本,用于练习sql手工注入(不推荐使用自动化工具sqlmap进行练习)。
sqlilabs自带数据库security:
3.布尔盲注
布尔盲注:盲代表“正确有回显,错误没有回显”;bool代表加了bool条件的判断,也即?id=1 and …(后面的这个条件的结果是正确/错误)
4.基于时间的盲注
正确与否显示都一样。使用if()+sleep()
但是网页会因为sleep()而延迟可刷新时间
5.基于报错的注入
总结
- sqlmap可以快速对各url进行布尔、基于时间、基于报错、以及Part1中的union的注入。
- 为了弄清sqlmap中每个注入的底层原理,可以自己对sqlilabs中的几十个案例进行手工注入+写sqlmap类似的自动化脚本。看了一下github上已经有类似的脚本https://github.com/ggfgh/sqli_script