CTFshow之RCE代码命令远程执行第41关到第52关详细讲解。可私信!

news2024/11/27 0:20:28

与其抱怨自己,不如埋怨他人。

                                                        --莫迪大仙

引言:今天来到ctf赛题RCE专题第二天(今天肯定写不完了啊啊啊啊啊),不过继续加油!

一、实验准备

1、ctf网址

2、firefox浏览器、hackbar插件

二、实验过程

(一)、第41关 代码审计

简单代码审计过后,整个人都不对了。你小子直接把数字和小写字母全部过滤了,而且ctf基本都是linux服务器区分大小写,并且过滤$和&符号,使得参数逃逸变成幻想,所以这咋玩?不过,主角总是最后出现,使用异或、或运算!

由于这一关我觉得十分有必要单独出一期仔细讲讲,所以参考以下文章。
CTFshow之RCE代码命令远程执行第41关超详细讲解。保教包会,不会可私信!-CSDN博客

(二)、第42关 代码审计和重定向文件

简单代码审计过后,发现出现了>dev/null 2>&1,啥意思?就是说我们将变量c传入后system执行的命令结果不再显示,而是被“吞掉”!所以此时我们即使可以传入命令执行代码,但是结果无法显示

不过,我们可以使用;||进行构造绕过,骗一手,使得;||前的命令执行输出,之后的命令执行结果被“吞掉”。

||表示前面的命令执行成功则后面的命令不执行,否则执行后面的命令

payload1:

?c=tac fla*;

payload2:

?c=tac fla*||

(三)、第43关 代码审计和重定向文件

简单代码审计后发现在上一关的基础上增加了对参数c的过滤,;cat被过滤了,我们依旧可以延续上一关的思路

通过使用tac命令直接读取文件内容,||用于绕过被“吞噬”

payload:

?c=tac flag.php||

(四)、第44关 代码审计和重定向文件

简单代码设计后在之前的逻辑上过滤了flag,所以我们使用通配符*或占位符?进行绕过即可

payload:

?c=tac fla?.php||

(五)、第45关 代码审计和重定向文件

简单代码审计过后发现此关在上一关的基础上过滤了空格,不过是些许过滤罢了

过滤内容:

;  cat  flag  空格

我们使用$IFS($符号表示取linux环境下的变量)IFS代替空格,三种书写方式都可以:$IFS$9,${IFS},$IFS。那么什么是IFS呢?

Linux下存在一个特殊的环境变量叫做IFS,即内部字段分隔符 (internal field separator).
1、?cmd=ls$IFS-l     //此时执行ls -l命令可以绕过空格过滤
2、单纯$IFS2,IFS2被bash解释器当做变量名,输不出来结果,加一个0就固定了变量名
?cmd=ls${IFS}-l
3、$IFS$9后面加上${}类似,起截断作用;$9表示当前系统shell进程第九个参数持有者,并且值始终为空字符串

payload:

?c=tac${IFS}fla*.php||

(六)、第46关 代码审计和重定向文件

简单审计过后,过滤字符为:

;  cat  flag  空格  0-9整数  $  *

相较于上一关过滤内容多了0-9整数  $  *,对比我们上一关的payload,通配符*和$无法再使用,所以无法进行白嫖

再想想还有什么可以打破空格束缚?%09表示Tab键,可以一试

payload:

?c=tac%09fla?.php||

(七)、第47关 代码审计和重定向文件

简单审计过后,发现过滤内容为:

;  cat  flag  空格  0-9整数  $  * more tail less head sort

分析过后发现仅仅是多过滤了linux中读取文件的命令函数,白嫖上一关的payload

payload:

?c=tac%09fla?.php||

(八)、第48关 代码审计和重定向文件

简单审计过后,过滤内容为:

;  cat  flag  空格  0-9整数  $  * more tail less head sort  sed  cut  awk strings od curl  `反引号) 

对比上一关依旧添加了许多文本处理的Linux命令操作,依旧没有伤到我们的大动脉,继续白嫖!

payload:

?c=tac%09fla?.php||

(九)、第49关 代码审计和重定向文件

简单代码审计过后,过滤字符为:

;  cat  flag  空格  0-9整数  $  * more tail less head sort  sed  cut  awk strings od curl  `(反引号)  %

终于,常在河边走,那有不湿鞋,%被“禁了”!但是我们仍然可以使用%09(TAB键)进行绕过。但是此时会有同学疑惑了,%不是被过滤了吗,咋过的??好问题!参考下述文章

CTFshow之RCE代码命令远程执行第49关详细讲解。可私信!-CSDN博客

payload:

?c=tac%09fla?.php||

(十)、第50关 代码审计和重定向文件

简单代码审计后,过滤内容:

;  cat  flag  空格  0-9整数  $  * more tail less head sort  sed   cut  awk strings od curl  `(反引号)  % x09 x26

将我们的制表符tab过滤了(x09是tab十六进行表达式),所以换一种办法,使用我们的nl命令

构造payload时,关注四个点

1、nl命令可以用于读取文件

2、nl命令后面接文件名时需要跟上空格,但是空格被过滤了,所以可以使用<进行替代

3、由于flag被过滤,所以我们使用f''lag形式进行绕过,''表示为空,但是在执行命令时不被考虑

4、nl命令输出内容需要通过右键查看源码得到

payload:

c=nl<f''lag.php||

(c=tac<f""lag.php同样可以绕过)

(十一)、第51关 代码审计和重定向文件

简单代码审计后,过滤内容为:

;  cat  flag  空格  0-9整数  $  * more tail less head sort  sed  cut  awk strings od curl  `(反引号)  % tac

过滤内容多了tac,不过我们已经不在需要tac进行读取,白嫖上一关即可

payload:

?c=nl<fl''ag.php||

轻松绕过!

(十二)、第52关 代码审计和重定向文件

简单代码审计后,过滤内容:

;  cat  flag  空格  0-9整数    * more tail less head sort  sed  cut  awk strings od curl  `(反引号)  % tac  >  <

好家伙,把<也给过滤了,咋个办捏??但是$符号又被放出来了,真实顾此失彼呀!我们之前使用<就是因为空格和$都被过滤,现在好了,直接开历史的倒车!

payload:

?c=nl${IFS}fla%27%27g.php||

%27是单引号'的URL编码

但是,一查看发现目录不对,淦!开始查看目录所在位置

payload:

?c=nl${IFS}../../../fl''ag||

跑了好几个目录还是被我找到了!!

至此全部完成!

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

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

相关文章

大数据分析-二手车用户数据可视化分析

项目背景 在当今的大数据时代&#xff0c;数据可视化扮演着至关重要的角色。随着信息的爆炸式增长&#xff0c;我们面临着前所未有的数据挑战。这些数据可能来自社交媒体、商业交易、科学研究、医疗记录等各个领域&#xff0c;它们庞大而复杂&#xff0c;难以通过传统的数据处…

Day 25:1807. 替换字符串中的括号内容

Leetcode 1807. 替换字符串中的括号内容 给你一个字符串 s &#xff0c;它包含一些括号对&#xff0c;每个括号中包含一个 非空 的键。 比方说&#xff0c;字符串 “(name)is(age)yearsold” 中&#xff0c;有 两个 括号对&#xff0c;分别包含键 “name” 和 “age” 。 你知道…

Linux:生产消费模型 读者写者模型

Linux&#xff1a;生产消费模型 & 读者写者模型 生产消费模型阻塞队列基本结构构造与析构投放任务获取任务总代码 POSIX 信号量基本概念接口 环形队列基本结构构造与析构投放任务获取任务总代码 读者写者模型读写锁 生产消费模型 生产消费模型是一种用于处理多线程之间任务…

编译器优化入门(基于ESP32)

主要参考资料&#xff1a; kimi: https://kimi.moonshot.cn/ ESP-IDF 支持多种编译器&#xff0c;但默认情况下&#xff0c;它使用的是乐鑫官方提供的 Xtensa 编译器&#xff0c;这是一个针对 ESP32 芯片架构&#xff08;Tensilica Xtensa LX6 微处理器&#xff09;优化的交叉编…

大学课设项目,Windows端基于UDP的网络聊天程序的服务端和客户端

文章目录 前言项目需求介绍一、服务端1.对Udp套接字进行一个封装2. UdpServer的编写3. Task.h4.protocol.h的编写5.线程池的编写6.main.cc 二、客户端1. Socket.h2.protocol.h3.UdpClient4.menu.h5.main.cpp 三、运行图 前言 本次项目可以作为之前内容的一个扩展&#xff0c;学…

windows 11 之 下载安装 curl

1. 背景 需要执行一个 curl 命令运行一个定时任务&#xff0c;之前博主用的mac&#xff0c;无需担心这个下载安装问题&#xff0c;现在转为 windows&#xff0c;需要下载安装crul命令。 2. 出现问题 3. 解决办法 3.1 下载最新的包 下载地址&#xff1a;https://curl.se/win…

文档项目:攻坚克难

鉴于交流离心机存在的缺点&#xff1a;转速相对偏差、稳定精度不够高&#xff1b;带负载能力受外界扰动后&#xff0c;波动较大&#xff1b;寿命短&#xff0c;研究所各相关部门成立组成技术攻关团队&#xff0c;齐心协力&#xff0c;攻坚克难&#xff0c;在摸索中突破创新&…

推荐 3 款小巧的文件压缩、投屏和快速启动软件,请收藏,避免找不到

Maya Maya是一款由博主25H开发的体积小巧、简单易用的快速启动工具。它的操作逻辑和界面设计几乎复刻了Rolan早期版本&#xff0c;功能上与Rolan几乎别无二致。Maya支持多文件拖拽添加启动、快捷键呼出、自动多列显示等功能。此外&#xff0c;Maya还具备lnk文件解析功能。 May…

“Jedis与Redis整合指南:实现高效的Java应用与Redis交互“

目录 #. 概念 1. 导入jedis依赖 2. 写一个类&#xff08;ping通redis&#xff09; 3. String字符串使用 3.1 set&#xff0c;get方法使用&#xff08;设值&#xff0c;取值&#xff09; 3.2 mset&#xff0c;mget方法使用&#xff08;设置多个值&#xff0c;取多个值&…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】 采购简要流程采购单采购人员的接口分布式基础篇总结参考 采购简要流程 采购单 可以搞个枚举&#xff1a; public class WareConstant {public enu…

2024中国应急(消防)品牌巡展成都站成功召开!

汇聚品牌力量&#xff0c;共同相聚成都。6月14日&#xff0c;由中国安全产业协会指导&#xff0c;中国安全产业协会应急创新分会、应急救援产业网联合主办&#xff0c;四川省消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-成都站成功举办。该巡展旨在展示中国应…

特殊医学用途配方食品注册数据库

在这个追求健康的时代&#xff0c;特殊医学用途配方食品&#xff08;简称特医食品&#xff09;已成为众多特殊需求人群的膳食选择。它们不仅满足了特定疾病状态下的营养需求&#xff0c;更是病患康复之路上的重要伴侣。然而&#xff0c;面对市场上琳琅满目的特医食品&#xff0…

如何完成独立接口测试

有时我们需要完成独立的接口测试工作&#xff0c;在经过上面的接口测试工作准备后&#xff0c;下面我们可以这样开展独立的接口测试工作。先快速的学习接口设计&#xff0c;有一个整体的认识&#xff0c;再确定接口测试工作目标&#xff0c;再经过第一阶段确认接口的功能能够正…

2-8 基于matlab的ESMD(Extreme-Point Symmetric Mode Decomposition)信号分解算法

基于matlab的ESMD&#xff08;Extreme-Point Symmetric Mode Decomposition&#xff09;信号分解算法&#xff0c;其基本思想是通过寻找数据序列中的极大值点和极小值点&#xff0c;并以此为基础进行信号分解。该方法在观测数据的趋势分离、异常诊断和时-频分析方面具有独特优势…

Redis 网络模型

一、用户空间和内核空间 1.1 linux 简介 服务器大多采用 Linux 系统&#xff0c;这里我们以 Linux 为例来讲解&#xff0c;下面有两个不同的 linux 发行版&#xff0c;分别位 ubuntu 和 centos&#xff0c;其实发行版就是在 Linux 系统上包了一层壳。 任何 Linux 发行版&#…

【排序算法】希尔排序详解(C语言)

文章目录 前言希尔排序的原理原理思路 代码实现希尔排序的相关问题效率算法稳定性 前言 为什么会有希尔排序&#xff0c;要从插入排序说起&#xff0c;希尔排序一开始设计出来是为了改进插入排序&#xff0c;因为插入排序在处理大量数据时效率不高&#xff0c;特别是对于近乎有…

结合Boosting理论与深度ResNet:ICML2018论文代码详解与实现

代码见&#xff1a;JordanAsh/boostresnet: A PyTorch implementation of BoostResNet 原始论文&#xff1a;Huang F, Ash J, Langford J, et al. Learning deep resnet blocks sequentially using boosting theory[C]//International Conference on Machine Learning. PMLR, 2…

Bagging与Boosting的应用与优势

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

深浅拷贝以及正则表达式(python)

浅拷贝和深拷贝&#xff1a; 浅拷贝&#xff1a; copy函数是浅拷贝&#xff0c;支队可变类型的第一层对象进行拷贝&#xff0c;对拷贝的对象开辟显得内存空间进行存储&#xff0c;不会拷贝对象内部的子对象 不可变类型的浅拷贝示例&#xff1a; 浅拷贝不会对不可变类型进行…