1.关于sqli-labs
这个是sql注入的靶场。可以在git上下载。
2.题目简介
前面的1-22题都是sql注入的基础题目。覆盖范围很广,不过都是针对mysql数据库的。
1-4题:union注入
5-8题:布尔盲注
9-10题:延时盲注
11-12题:post形式的显错注入
13-16题:post形式的布尔盲注
17题:update语句的显错注入
18-19题:http头显错注入
20-22题:cookie显错注入
3. 解题技巧
(1)对于sql注入靶场,这种基础型的。不需要把数据库的所有数据挨个找出来。关键点在于闭合sql语句,达到页面可控。也就是当你找到注入方式就可以了,如何判断是否找到注入方式呢,就是你插入的语句都按照预期执行了,就可以了。
(2)常用闭合语句:
- ?id=1'#
- ?id=1#
- ?id=1')#
- ?id=1'))#
- 我发现mysql的"有点特殊,一般再php写的很少使用,好像是直接把php代码中的sql语句的字符串给闭合了,而不是闭合查询语句。
(3)常用函数
- updatexml() 通常用法是 updatexml(0,concat(0x7e,database(),0x7e),1) 。用于报错注入
- sleep() 用于延时注入,配套的还有length()等等
4.总结:
(1)我大部分都是看着源码来定向注入的。
(2)注入第一步应该就是要触发sql的报错,根据报错信息猜测sql查询语句,报错内容常用单引号引起来。
(3)我时常在想,都是基于报错注入的,那要是不报错是不是这些都不好使了呀。不过代码审计的时候这些都是关键点。
且看看进阶题都是些什么吧。