[HCTF 2018]WarmUp

发布于:2024-12-08 ⋅ 阅读:(147) ⋅ 点赞:(0)

抓包什么也没看到

就是访问这个滑稽的图片

信息收集

这里说明就是他的后台代码

在这个php里面

我们访问

这样就很好看了

代码审计

[HCTF 2018]WarmUp全网最详细解释-CSDN博客

这篇博客讲得真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

至于为什么可以再路径读取,不是很懂


网站公告

今日签到

点亮在社区的每一天
去签到