【BUUCTF】 HCTF2018 WarmUp

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

【BUUCTF】 HCTF2018 WarmUp_第1张图片

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

【BUUCTF】 HCTF2018 WarmUp_第2张图片

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

【BUUCTF】 HCTF2018 WarmUp_第3张图片

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

【BUUCTF】 HCTF2018 WarmUp_第4张图片

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

再把目光放到上面的checkFile函数中

【BUUCTF】 HCTF2018 WarmUp_第5张图片

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

【BUUCTF】 HCTF2018 WarmUp_第6张图片

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

由hint.php访问,可以看见提示

【BUUCTF】 HCTF2018 WarmUp_第7张图片

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

?file=hint.php?ffffllllaaaagggg或者?file=source.php?ffffllllaaaagggg

在经过尝试过后,得到答案

【BUUCTF】 HCTF2018 WarmUp_第8张图片

flag{9ac2e023-9b93-4347-b8c9-d676f3a866bb}

你可能感兴趣的:(php,安全)