[HCTF 2018]WarmUp

做题

小白的起始第一步,打开网页先F12看下源码,以后无论什么网页,没头绪就F12
[HCTF 2018]WarmUp这里有个注释说要看source.php,html文档里面注释符号是用如上方式使前端不显示该[HCTF 2018]WarmUp直接是源码,那就审计就完事了,这里刚刚入门的小白一定要注意,遇到不懂的函数一定要百度,这可不是高考英语完形填空,你看上下文就能明白的,多积累以后自然有用,这里is开头的函数就是字面意思,意思就是是不是后面的类型,注意前面的是函数,调用从后面的主函数开始,不要开始傻傻的看函数不明所以(就是我),先看下面的变量定义
[HCTF 2018]WarmUp观察发现这里接受了一个变量,$_REQUEST忘记了,查一查如下

request_order:这个配置项设置 PHP 将 GET, POST 和 Cookie 中的哪些添加到 $_REQUEST 中,并且指定了填充时的顺序。如果 request_order 设置为空,则填充的顺序会以 variables_order 配置项中的顺序为准。例如,设置为 request_order = “GP” 时,代表 $_REQUEST 将包含 $_GET 和 $_POST 的值,并且当 $_GET 和 P O S T 中 的 键 相 同 时 , _POST 中的键相同时, POST_POST的值将覆盖 $_GET 的值。

所以这里就先传GET值试一试,毕竟简便一些,这里传什么呢,打开hint.php看一下
[HCTF 2018]WarmUp

发现该信息,再审计整体函数,传一个参,必须要有且是字符串,通过checkfile检验才能包含,而这个checkfile是一个白名单,只能包含两个php文件,贴两个忘记用法的函数,也就是截取你的输入看是不是白名单里的,三次检查只要有一次是对的就行了,这里出题人考虑的很周到,所以你输入url编码还是直接输入都行

mb_strpos (hayststr,intstart[, int l e n g t h [ , s t r i n g length[, string length[,stringencoding]] );截取字符。从str的开始位置计算。第一个字符的位置为0。第二个字符的位置是1,依此类推。

但是这实在是不好绕过,原来自己这么菜,百度启动,经过查阅资料,得到这是phpmyadmin 4.8.1的一个远程文件包含的漏洞就是你可以使用…/…/访问web目录上级文件夹,一般是不行的,所以构造payload
[HCTF 2018]WarmUp
成功文件包含得到flag
[HCTF 2018]WarmUp

验证

这个地方还是有难度,后来发现主要是在于环境问题,首先一样,phpstudy直接起一个环境,里面放如下文件
[HCTF 2018]WarmUp1.php就是我们看到的源码,2.php用来包含,source里面什么都不用写,避免报错而已,flag.txt随便写个flag,我们在这里加一个包含路径方便验证
[HCTF 2018]WarmUp

注意,这里环境最好在Linux虚拟机上配置,在本机上配置会出现各种错误
例如:[HCTF 2018]WarmUp
尝试了很久未解决,估计是编码的问题,按照上文分析应该是一重两重和不url编码应该都可以,但是在Windows上只能双重编码,所以转移阵地,成功包含[HCTF 2018]WarmUp这里也就是把source.php/当成一个路径再…/回退读取flag.txt,没有漏洞的正常情况是这样,但是试一试就知道这里如果再输入…/就会报错,这就是没有远程包含的漏洞,但是利用上文漏洞就可以一直读取到根目录,具体该漏洞成因可以自行百度。

这里解释一下,有些术语可能刚刚入门看不懂也没事,例如上文的文件包含,但是诸如url,html之类非常基础的东西,还是需要先学一下,不然后面学习会有点困难

版权声明:玥玥 发表于 2021-08-17 0:02:31。
转载请注明:[HCTF 2018]WarmUp | 女黑客导航