BUUOJ [HCTF 2018]WarmUp

BUUOJ [HCTF 2018]WarmUp

第一次参加ctf,这次头铁的报名了网鼎,hhh,不能给队伍拖后腿了,还是刷刷题。

从buuoj一题一题开始刷,第一题WarmUp。

1.打开网站,发现只有一个滑稽:

在这里插入图片描述
2.因为是做的web题,不太可能是隐写,F12看看源码:
在这里插入图片描述
3.看到这个source.php没有?访问一下看看:
在这里插入图片描述
4.也就是代码审计了,不过这个咋和phpmyadmin的文件包含漏洞是一样的= =。CVE-2018-12613。从上到下一块一块分析:

这里定义了一个类,然后定义了一个静态方法,然后设置了一个白名单,白名单的内容是source.php和hint.php。
接下来是 假如page参数不存在或者page参数不是字符串,就return false。

在这里插入图片描述
5.如果page参数在白名单里,就返回true。
在这里插入图片描述
6.从里往外看,mb_strpos是获取page参数里第一次出现问号的位置。mb_substr就是获取page参数从0到上面返回的位置的字符串。
就是说,无论我们输入dawn.php?dawn还是dawn.php。返回的都是dawn.php

在这里插入图片描述
7.这一步就是在上面的基础上进行了一次url解码。
在这里插入图片描述
8.然后这里检查我们传入的file参数是否为空,判断是不是字符串,且调用了上面的函数。如果都满足,就包含file。注意这里并不是包含的处理后的数据,而是我们原生的输入数据
在这里插入图片描述
9.突然想起来,上面白名单里还有个hint.php没看:


突然想起来,上面白名单里还有个hint.php没看:在这里插入图片描述
10.这里告诉了我们flag文件的名字。
然后我们就常规利用:
/source.php?file=hint.php?../…/…/…/…/ffffllllaaaagggg

在包含的时候会把hint.php?/当成一层目录,但是该层不存在,我猜测就还是在当前层,然后往上遍历找到flag。假如环境是windows环境的话还需要对问号进行二次url编码,因为windows下目录不能有问号。

建议直接复现CVE-2018-12613。

发布了18 篇原创文章 · 获赞 9 · 访问量 2648

猜你喜欢

转载自blog.csdn.net/qq_43622442/article/details/105449053