2021暑假刷题
正式开始暑假啦!虽然做什么事情都没有什么恒心的我,想来还是继续开坑开始做题,这次一定要坚持下去哦
靶场:buuctf(web)
1.[HCTF 2018]WarmUp
漏洞:文件包含,代码审计
题解:首先文件包含漏洞的起因是php程序员想要更加方便的引用外部数据,外部文件,所以写下了include()函数还有require()等等函数,可以直接用来引用各种外部数据,这也就造成了文件包含漏洞的出现,因为我们可以提交一些恶意数据/代码让include()等函数执行。(感觉基本所有的漏洞起因都是因为恶意输入被执行)
文件包含漏洞分为内部文件包含和远程文件包含,这取决于服务器的php.ini的配置选项allow_url_fopen和allow_url_include是否为ON。ON的话可以加载远程文件,OFF则不行。
然后使用?filename=xxx../../遍历目录
这道题是基础的代码审计题,大概就是传进去的参数会经过多重判断。首先是必须要字符串,不能为空,然后要包含hint.php或者source.php。对于我们传进去的字符串,他在编码之后,截取了两个问号之间的内容,并对其进行了判断是否符合要求。
最后的payload是:http://d1e3dc6a-3f05-4147-a0af-6195a26bb521.node4.buuoj.cn/source.php?file=source.php%253F/../../../../../ffffllllaaaagggg
注:最后的../遍历目录个数需要一个个试,因为不确定到底是哪个
2.[ACTF2020 新生赛]Include
漏洞:文件包含
知识点:php伪协议
题解:打开题目,我们看到的url是这样的:http://da8848f8-f85a-43c0-bc68-7fa27e0fe11d.node4.buuoj.cn/?file=flag.php
“=”之后flag.php是我们想要查看的文件的名字,也可以把这个看成是我们提交的数据。但是当我们使用php伪协议作为数据提交,就可以读取到php文件的数据(不用这个服务器会把数据直接当作php文件执行。
php:// :访问输入输出流
php://filter :内置多种过滤器,常用来读取源码文件
php://filter/read=convert.base64-encode/resource=flag.php :其中,convert.base64-encode是用base64加密源码内容,如果不加密,文件会直接被当作php文件执行,无法显示。
然后我们就可以获得flag了,之后再解密即可。
3.[ACTF2020 新生赛]Exec
漏洞:命令执行漏洞
知识点:管道符,linux命令
题解:打开题目可以看到一个ping的界面,输入ip也确实可以ping通,通过burpsuite抓包也确实可以看到执行了ping命令。这个时候想到命令执行漏洞(结合题目exec也可以想到),及在原本的命令后面拼接linux命令语句,使得我们构造的命令一起被执行。这个时候要用到管道符|:按位与,后面的语句都可直接执行,||:异或等等。
所以我们先构造命令:127.0.0.1 | ls
显示出当先目录下的文件,只有一个index.php。然后使用pwd命令查看当前目录,发现当前目录在/var/www/html/,这时候使用命令遍历目录,即ls ../ 以及 ../../一直到最后在../../../也就是根目录下发现了flag,使用cat /flag命令查看,可以看到flag
4.[极客大挑战 2019]Secret
漏洞:文件包含
题解:打开网址,看到一个界面,先查看源码,发现了一个界面,查看源码,可以看到一个提示页面Archive_room.php,访问之后可以看到有一个secret按钮,点击之后快速跳转,如下面两张图所示:


这个时候想到使用burpsuite抓包,抓包之后再发送到repeater,send之后看到一个secr3t.php文件,访问。

看到部分源码,分析一下,过滤了部分文件名,然后flag在flag.php文件里

直接访问flag.php没有信息,源码也没有,说明flag不在前端,这个时候联系之前看到的secr3t.php里面写到的include文件包含,想到应该是使用php://filter读取源码

构造payload:secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
得到源码:

解码之后得到flag:


浙公网安备 33010602011771号