其他分享
首页 > 其他分享> > buuctf-WarmUp

buuctf-WarmUp

作者:互联网

在这里插入图片描述
首先我们先看下题目给的提示
Php 代码审计
注意,一般题目给出这样的题解,就已经相当于明确的告诉你,flag线索在网页源码里
而我们只要使用f12快捷键,就可以查看网页源码
在这里插入图片描述进入环境,我们可以看到只有一张图片,根据我们的思路,查看页面源码
在这里插入图片描述

好,线索已经出来了
在这里插入图片描述
我们来访问一下
在这里插入图片描述
在这里插入图片描述
在新的页面下返回了一段php源码
审计一下
在这段源码里有几个醒目的地方就是php逻辑运算符
&&逻辑与 ||逻辑或
在这里插入图片描述要求我们的file变量不为空
我们来看看这段代码在这里插入图片描述首先要求我们传进去的得是字符串类型在这里插入图片描述
而下面这段代码又将我们的值传到了emmm类中的checkFile函数
并且这三个值是使用&&逻辑与连接的。所有要求返回值全为真才能返回文件包含的代码,否则返回else中的图片代码
在这里插入图片描述要求已经知道啦,接下来就是函数的使用在这里插入图片描述

mb_substr()函数返回字符串的一部分
在这里插入图片描述
mb_strpos(haystack,needle)
第一个参数是要被检查的字符串,第二个参数是要搜索的字符串

代码审计到这里,现在需要做的事就是构造我们的payload
在这里插入图片描述源码中可以看到有一个新的界面在这里插入图片描述Flag的文件名出来了
好,我们再回去看看emm有什么阻拦我们的在这里插入图片描述仔细一看还挺多在这里插入图片描述白名单在这里插入图片描述

首先是isset()判断变量是否声明,is_string判断参数是否为字符串在这里插入图片描述
检测传进来的值是否匹配白名单,是则执行真
在这里插入图片描述

过滤?的函数(如果 p a g e 的 值 有 ? , 就 从 ? 前 提 取 字 符 串 ) 返 回 page的值有?,就从?前提取字符串) 返回 page的值有?,就从?前提取字符串)返回page.?中?出现的第一个位置
在这里插入图片描述

二次检查是否匹配白名单
在这里插入图片描述

Url编码
在这里插入图片描述

二次过滤问号,与之前相同
在这里插入图片描述

第三次检测是否匹配白名单
所有的过滤都清楚了
三次白名单,两次问号过滤,一次url解码
依照这个构造payload
Hint.php?../…/…/…/…/ffffllllaaaagggg(第一次白名单后是hint.php。再过滤一次白名单,返回真。最后成功进行包含拿到flag)

标签:返回,buuctf,WarmUp,代码,字符串,源码,白名单,php
来源: https://blog.csdn.net/xixihahawuwu/article/details/109996799