buuctf-web-warmup

WarmUp

直接crtl+u看源码,提示source.php

source.php

 再看看hint.php有什么

hint.php

前不久学过一点文件包含漏洞,但这种类型的还没有做过,百度后发现这是远程文件包含

https://www.cnblogs.com/leixiao-/p/10265150.html

现在就知道了如何利用,分析如下:

checkfile:

''if (! isset($page) || !is_string($page))'',判断$page是否为空、是否为字符串.

当$page在$whitelist(白名单)中时,返回true;考虑到有$page有参数,进入 

$_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
);

_$page是取出$page问号前的字符串,再判断_$page是否在$whitelist中,是则返回true;还会考虑到参数有url编码的情况,还会进入下一次判断:

$_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }

大致过程:

判断$page是否在$whitelist中->(如果是,返回true,在此结束)如果不是,考虑参数,取?前字符串为$_page,判断_$page是否在$whitelist中->(如果是,返回true,在此结束)如果不是,考虑url编码,url解码后取?前字符串为$_page,判断是否在$whitelist中->如果是,则返回true,否则echo "you can't see it";

因此可以构造不同的payload

1、?file=hint.php%253f/../../../../../../../../ffffllllaaaagggg,因为服务器会自动解一次码,(%25 url解码为%),所以$page为hint.php%3f/../../../../../../../../ffffllllaaaagggg

再次解码后为hint.php?/../../../../../../../../ffffllllaaaagggg,取hint.php返回true

2、?file=hint.php?/../../../../../../../../ffffllllaaaagggg这里就不多介绍了

结语

第一次写文章,感觉学的还是太少,突然想起来前几天好像也有这种题,没做出来。(我是fw。。。)

参考自https://blog.csdn.net/weixin_44677409/article/details/93300823

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值