warmup攻防世界2023.11.13

文章描述了一个关于PHP代码审计中的漏洞,涉及文件包含漏洞利用,通过$_REQUEST获取参数,利用字符串检查和白名单限制,最终通过URL编码绕过安全检查获取flag。漏洞利用过程包括路径构造和编码技巧。
摘要由CSDN通过智能技术生成

进入页面之后查看源代码

发现source.php

访问后发现代码审计

代码分为两个部分,上面是class,下面是一个if判断,如果经过if判断正确后直接进入文件包含漏洞中获取flag

$_REQUEST是get或者post获取参数值

empty判空

is_string判是否为字符串

emmm::checkFile通过emmm类判断

也就是file传入一个字符串即可通过前两个判断,进入emmm类中

类中有四个判断,不可以满足第一个,满足后三个中一个即可

第一个if,   判断page变量是否为空,是否是字符串
第二个if,判断传入的page是否在白名单中
第三个if,截取page ?之前的字符赋给_page,判断_page是否在白名单中
第四个if,对page进行一次url解码并赋给_page,截取_page ?之前的字符赋给_page
判断_page是否在白名单中,因此需传入二次编码后的内容,就可以使checkfile返回true

第一个if传入字符串即可

第二个if传入必须是白名单中内容($whitelist = ["source"=>"source.php","hint"=>"hint.php"];)

传入后发现不是flag,但是给出了提示信息(flag not here, and flag in ffffllllaaaagggg)

第三个if截取file中?之前的内容所以再加一个?

发现页面显示空白,猜测第三个判断成功

直接使用include漏洞(根据构造路径进行寻找文件)

根据上面的提示猜测要四个../,发现不是,结果是五个../

再回到上面的第四个if,需要经过一次url解码,并且再次截取?之前的字符串,查看是否在白名单中,只需要对?进行一次url编码(%3f)即可,后续include漏洞一致。

?file=hint.php%3f../../../../../ffffllllaaaagggg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值