2021-03-27

BUUOJ-web-1 PHP的代码审计

进入网站后,看到一张滑稽的图片,打开网页的源代码,发现有一个被注释的source.php文件,所以我们就尝试着用php打开这个文件在这里插入图片描述
打开文件后
注意这里不能在打开源代码的网页去打开source.PHP
注意这里不能在打开源代码的网页去打开source.PHP,必须在原网页中去打开
接着开始审计代码
在这里插入图片描述
这一段代码是主代码块,可以轻易看出,必须满足传入(request)的file满足if中的is-string以及checkfile函数才能exit。
在这里插入图片描述
这里有四个if和对应的返回值,
第一个if语句对变量进行检验,要求 p a g e 为 字 符 串 , 否 则 返 回 f a l s e 第 二 个 i f 语 句 判 断 page为字符串,否则返回false 第二个if语句判断 pagefalseifpage是否存在于 w h i t e l i s t 数 组 中 , 存 在 则 返 回 t r u e 第 三 个 i f 语 句 判 断 截 取 后 的 whitelist数组中,存在则返回true 第三个if语句判断截取后的 whitelisttrueifpage是否存在于 w h i t e l i s t 数 组 中 , 截 取 whitelist数组中,截取 whitelistpage中’?'前部分,存在则返回true
第四个if语句判断url解码并截取后的 p a g e 是 否 存 在 于 page是否存在于 pagewhitelist中,存在则返回true
若以上四个if语句均未返回值,则返回false

mb_substr(str1,start,[length][,[str2]]):是在str1从start开始length为长度截取字符串,str2是表示字符编码
mb_strpos(str1,str2):查找str2在str1中出现的位置
$_page . '?表示在page后拼接?,相当于这里在过滤问号即绕开函数检测,
这里的urldecode是将?转换为asci码,所以最后应传入的参数为source.php?file=source.php%253f…/…/…/…/…/ffffllllaaaagggg
其中…/表示上一级目录,到底几个…/。尝试就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值