抓包什么也没看到
就是访问这个滑稽的图片
信息收集
这里说明就是他的后台代码
在这个php里面
我们访问
这样就很好看了
代码审计
[HCTF 2018]WarmUp全网最详细解释-优快云博客
这篇博客讲得真JB好
我就复述下我对博主的理解吧~
这里我们可以看见白名单是source.php 和hint.php
现在我假设我的url是
http://21cfa0f7-1283-4185-9d2d-70d78c27f6de.node5.buuoj.cn:81/source.php?file=hint.php
首先就是进行的这里
file就是我们后面跟的 ?hint.php
那么就是hint.php是否为空和字符串
如果通过,传入checkfile里面,我们的参数是hint.php
然后进行下面这段代码
首先我们符合字符串和白名单,就不会G
mb——substr函数的意思就是截取字符串,从mb_strpos的位置(引用上面博客的)
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
那么这个函数就有说法了
我们首先page是
21cfa0f7-1283-4185-9d2d-70d78c27f6de.node5.buuoj.cn:81/source.php?file=hint.php里面的file参数也就是hint.php
mb_strpos截取到?
符号点 '.' 是 PHP 中的字符串连接运算符,它用于将两个字符串连接在一起,形成一个更长的字符串。在这里,它将 $page 变量的值和一个问号字符 '?' 连接在一起,形成一个新的字符串,在这个新的字符串中查找问号是否存在,那么很明显肯定能找到。
($_page . '?'
)这是一个参数
意思是截取到hint.php
然后return ture
告诉了我们这个
一般来说,flag是在根目录下
我们看的php代码 一般的目录 root/var/www/html/123.php
意思是我们返回后,还需要跳会目录
/source.php?file=hint.php?/../../../../ffffllllaaaagggg
这是最后的url
现在我来解释下
首先 根据上面来
我们的page肯定就是
hint.php?/../../../../ffffllllaaaagggg
分别是跳到html www var root 刚好四个
然后最后到了读取 root/flag
这样的形势
这样了(因为我们传入的就是file形势,这里就是文件操作)
这里就是你检测过关之后
include和require差不多
就是发送这个请求
hint.php?/../../../../ffffllllaaaagggg
但是include后面会忽略
最后就只有hint.php
至于为什么可以再路径读取,不是很懂