这是一道有关php代码审计的入门题目,进入所给链接后看到的是一张滑稽的表情包

按照常规思路f12,看一看有什么,结果发现了一个名为source.php的注释

访问这个php页面,发现有一段代码

代码先定义了一个checkFile函数,然后主函数在下

大致意思是,只有链接中包含了file文件请求且通过了checkFile函数的验证,那么将把链接包含的file文件include到页面中,否则输出一张图片(推测为那个滑稽头像)
再把目光放到上面的checkFile函数中

可以看到 函数会检查file请求是否为空,是否是字符串等,且只有在参数中包含了source .php或者hint.php时才会生效

这一段中mb_strpos($page.'?','?')意味着将在page后面补一个'?',然后返回第一个问好所在的位置,配合mb_substr函数,便是要将请求字段中从头到‘?’前的部分截取下来。
由hint.php访问,可以看见提示

由前面的信息可以知道,我们需要构造一个file请求,这个请求需要经过两次‘?’的检查(mb_substr函数将‘?’前面的部分重新赋予$page,且这部分必须包含source.php或者hint.php,因此我们可以猜出这个请求应该是
?file=hint.php?ffffllllaaaagggg或者?file=source.php?ffffllllaaaagggg
在经过尝试过后,得到答案

flag{9ac2e023-9b93-4347-b8c9-d676f3a866bb}
这是一道PHP代码审计入门题。进入链接发现滑稽表情包,F12找到source.php注释。访问该页面,代码需链接含file请求并通过checkFile函数验证才包含文件。分析函数规则,结合hint.php提示构造请求,最终得出答案flag{9ac2e023-9b93-4347-b8c9-d676f3a866bb}。
651

被折叠的 条评论
为什么被折叠?



