[V&N2020 公开赛]HappyCTFd
这里考点是CTFd的最新的一个CVE。
users有admin,说明让我们利用这个CVE达到重置admin密码,并且登陆的目的。
我们在admin前面留个空,然后注册
可以看到变成了两个admin,然后这里我们重置密码
通过邮箱的链接找回密码,这里因为buu的是内网,无法访问外网,所以需要去内网邮箱注册一个
http://mail.buuoj.cn/admin/ui/login?next=ui.index
然后将我们自己的名字admin修改为别的,然后用重置的密码登陆admin
在admin panel找到
获得flag
[V&N2020 公开赛]TimeTravel[复现]
进入即源码
Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。
这题看了一些WP,发现是很有意思的东西。
httpproxy漏洞说明
那么问题来了, 在CGI(RFC 3875)的模式的时候, 会把请求中的Header, 加上HTTP_ 前缀, 注册为环境变量, 所以如果你在Header中发送一个Proxy:xxxxxx, 那么PHP就会把他注册为HTTP_PROXY环境变量, 于是getenv("HTTP_PROXY")就变成可被控制的了. 那么如果你的所有类似的请求, 都会被代理到攻击者想要的地址,之后攻击者就可以伪造,监听,篡改你的请求了
利用条件
- 代码以cgi模式运行,其中使用环境变量
HTTP_PROXY
- 信任 HTTP 客户端
HTTP_PROXY
并将其配置为代理 - 在请求处理程序中使用的该客户端发出HTTP(与HTTPS相对)请求
受影响范围
解法:
所以这里简单的利用就是,我们通过在请求flag参数的header中增加Proxy头,将其配置到我们监听的地方,并通过nc <file 返回我们伪造的json response,success:true
这里我们创小号起一个Linux labs
创建一个伪造的response b.txt
HTTP/1.1 200 OK Server: nginx/1.14.2 Date: Fri, 06 Mar 2020 18:27:31 GMT Content-Type: text/html; charset=UTF-8 Connection: Keep-alive Content-Length: 16 {"success":true}
然后nc监听
请求flag参数并且增加Proxy头
这里我复现失败了,请求过去后一直504
这里用cjm00n师傅的php返回的方法https://cjm00n.top/2020/02/29/V-N%E5%85%AC%E5%BC%80%E8%B5%9B2020-writeup/
<?php $arr = array("success"=>true); header("Content-Type:application/json"); echo json_encode($arr);
启动PHP内置服务器
php -S 0:2333
第四题的EasySpringMVC是JAVA,不会JAVA。
这里再看一下nc的命令,会直接返回数据
此题参考链接:
https://cjm00n.top/2020/02/29/V-N%E5%85%AC%E5%BC%80%E8%B5%9B2020-writeup/
https://www.cnblogs.com/JeffKing11/p/12430571.html