题目名称:warmup
题目描述:暂无
题目附件:暂无
题外话:
这两天做RSA题没做出来,看WriteUp发现RSA的原理自己还不太懂,题解也不太懂,好菜啊难受,,还是需要很多数学公式的,头都大了,先放一放吧,先做一道web放松一下。
WriteUp:
创建场景访问后的页面如下:
啥也没有,只有一个大表情,查看源码,提示\
source.php源码页面分析如下:
1 |
|
可以看到还有一个hint.php,查看内容如下:
根据猜测flag在得到了一个ffffllllaaaagggg文件中,source.php源码中有include语句。所以要把ffffllllaaaagggg文件的路径传入file参数中。
在本地使用wamp集成服务器组件搭建了一个php环境,一通测试分析之后如下:
在地址栏需要file传参
file参数值经过checkFile函数返回值要为true
- file参数值还要是ffffllllaaaagggg文件的路径
根据checkfile函数构造payload为:
?file=source.php%253f/../../../../ffffllllaaaagggg
因为%253f是’?’字符两次url编码后的值
因为url有一次自动url解码,第一次mb_substr时无变化,然后通过urldecode函数变成了?file=source.php?/../../../../ffffllllaaaagggg,然后截取?之前的参数正好是source.php结果返回true,而正好构造的payload是ffffllllaaaagggg的路径,../的个数是逐次添加尝试得到的结果,如下:
原理:
include语句会包含url自动解码后的source.php%3f/../../../../ffffllllaaaagggg,而会从php根目录source.php%3f文件开始一个../是一个上级目录,最后访问到ffffllllaaaagggg文件
另外:
下面这两个payload也可以访问,不知道为什么?
?file=source.php?../../../../../ffffllllaaaagggg
?file=source.php?/../../../../ffffllllaaaagggg
我再本地测试”source.php?/../“这样写的的话是不能访问上级目录的,好像不会把source.php?当成一个文件名,?会当成传参符号,也不知道为什么可以访问到,也不纠结了😬