目录
[HNCTF 2022 WEEK2]easy_include
1、题目
2、知识点
3、思路
[NSSRound#8 Basic]MyDoor
4、题目
5、知识点
6、思路
nginx日志漏洞执行系统命令
打开题目,出现源码
题目要我们上传一个file参数,但是对内容进行了过滤,对php、flag等进行过滤,首先想到php伪协议,但php被过滤了,抓个包
发现服务器用的是nginx1.8.0部署
这里的nginx存在一个日志文件漏洞,可以利用日志文件getshell
nginx的日志文件一般存在/var/log/nginx/access.log
可以读取到日志文件的内容
利用php执行系统命令
得到flag:NSSCTF{24b4c973-53b6-4c4c-9ad3-6c6aa77c05a2}
php伪协议,php解析绕过
打开题目,什么都没有,只有一个file参数和index.php,没有其他提示
思路,使用php伪协议,盲猜flag在flag或者flag.php文件里
php://filter使用
php://filter/read=convert.base64-encode/resource=[文件名]
显示错误,说明有过滤,尝试读取index.php
有内容,进行解码:Base64解码 Base64编码 UTF8 GB2312 UTF16 GBK 二进制 十六进制 解密 - The X 在线工具 (the-x.cn)
得到源码,源码这里可以上传一个N_S.S参数,会执行eval函数,说明这里可以执行系统函数
但是没有内容,为什么呢?
因为php的解析问题
参考文章:NSSCTF-Web题目19(数据库注入、文件上传、php非法传参)_ctf 通过网页提交文件写入数据 库-CSDN博客
当PHP版本小于8时,如果参数中出现中括号[,中括号会被转换成下划线_,然后后面出现的点(.)就不会被转化成下划线,参数就正确了
?file=1&N[S.S=system(ls);
?file=1&N[S.S=system('ls /');
这里没有看到flag文件,执行phpinfo()
?file=1&N[S.S=phpinfo();
得到flag:NSSCTF{8691090f-d32c-4692-b7b0-685b6cd8c87e}
这篇文章就先写到这里了,哪里不足的欢迎指出