练[FBCTF2019]RCEService
[FBCTF2019]RCEService
文章目录
- [FBCTF2019]RCEService
- 掌握知识
- 解题思路
- 关键paylaod
掌握知识
json字符串格式,命令失效(修改环境变量)–绝对路径使用linux命令,%0a绕过preg_match函数,代码审计
解题思路
- 打开题目链接,发现可以通过
json格式传递命令进行命令执行,但是不知道json的键名,输入ls显示无法识别,查看源代码后发现该输入框的name信息为cmd,确定这就是键,构建paylaod为{"cmd":"ls"},抓包查看成功回显信息



- 发现命令正常执行,准备查看根目录的文件,由于是
get传参,所以空格先编码为%20,但是发现回显hacking,经过测试发现是对/进行了过滤


- 既然不能使用/,那就直接使用
cat命令查看一下index.php文件,发现还是不行,尝试更改cat的格式进行绕过,发现还是不行。

- 仔细想想,既然存在过滤,多半碰到的函数都是
preg_match,该函数可以通过换行符%0a和数组进行绕过,因为该函数只会匹配第一行数据,除非设置了参数。所以默认为preg_match函数过滤,构建paylaod{%0a"cmd":"cat%20index.php"%0a}。发现还是不行,但是可以执行ls /命令了,证明前面猜测没问题,还绕过来了过滤


- 那为什么
cat命令还不行执行呢,都已经绕过了过滤。其实在没有限制的情况下命令还不能执行,只能是该命令被屏蔽了,但是使用其他查看文件的命令也都不可以。 - 那可能就是环境变量被更改了,需要使用命令的绝对路径来执行,也就是
/bin/cat。再次构建paylaod{%0a"cmd":"/bin/cat%20index.php"%0a}。成功回显了文件内容,还得到了一个病毒提示…

- 发现过滤函数确实是
preg_match,代码的一开始就将环境变量修改了,既然flag不在根目录下,那很可能就在这个环境变量中,查看环境变量目录结构,发现了flag目录,cat命令直接拿下flag


关键paylaod
{"cmd":"ls"}{"cmd":"ls%20/"}{"cmd":"cat%20index.php"}{%0a"cmd":"ls%20/"%0a}{%0a"cmd":"cat%20index.php"%0a}{%0a"cmd":"/bin/cat%20index.php"%0a}{%0a"cmd":"ls%20/home/rceserive"%0a}{%0a"cmd":"/bin/cat%20/home/rceserive/flag"%0a}
相关文章:
练[FBCTF2019]RCEService
[FBCTF2019]RCEService 文章目录 [FBCTF2019]RCEService掌握知识解题思路关键paylaod 掌握知识 json字符串格式,命令失效(修改环境变量)–绝对路径使用linux命令,%0a绕过preg_match函数,代码审计 解题思路 打开题目链接,发现…...
php实战案例记录(21)sprintf函数
在PHP中,sprintf()函数用于格式化字符串并返回一个字符串。它可以根据指定的格式对参数进行格式化,并将结果存储在一个字符串中。 sprintf()函数的语法如下: sprintf(format, var1, var2, ...)其中,format是一个包含格式说明符的…...
【数据结构-二叉树 九】【树的子结构】:树的子结构
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【子结构】,使用【二叉树】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...
七张图解锁Mybatis整体脉络,让你轻松拿捏面试官
前言 MyBatis是一款ORM(Object-Relational Mapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。 那MyBatis为我们做了哪些事情呢?其实&a…...
力扣之删除有序数组中的重复项
力扣:26. 删除有序数组中的重复项 - 力扣(LeetCode) 方法:双指针法。 我的方法: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0,fast;for(fast 0; fast < nums.size()…...
pnpm、npm、yarn 包管理工具『优劣对比』及『环境迁移』
前言 博主在开发前端网站的时候,发现随着开发的项目的逐渐增多,安装的依赖包越来越臃肿,依赖包的安装速度也是非常越来越慢,多项目开发管理也是比较麻烦。之前我就了解过 pnpm,但是当时担心更换包管理环境可能会出现的…...
【AntDesign】多环境配置和启动
环境分类,可以分为 本地环境、测试环境、生产环境等,通过对不同环境配置内容,来实现对不同环境做不同的事情。 AntDesign 项目,通过 config.xxx.ts 添加不同的后缀来区分配置文件,启动时候通过后缀启动即可。 config…...
Unix Network Programming Episode 78
‘getaddrinfo’ Function The gethostbyname and gethostbyaddr functions only support IPv4. The API for resolving IPv6 addresses went through several iterations, as will be described in Section 11.20(See 8.9.20); the final result is the getaddrinfo function…...
学习笔记(css穿透、vue-cookie、拦截器、vuex、导航守卫、token/Cookie、正则校验)
目录 一、记录 1、CSS穿透 2、输入框是否提示输入 3、插槽 #slot 4、v-deep深入改掉属性值 二、vue-cookie 1、官方文档 2、使用 三、拦截器 1、请求拦截器 2、响应拦截器 四、vuex对信息存取改 五、路由导航守卫 1、登录思路 2、设置白名单 六、Token与Cookie…...
Day4:Linux系统编程1-60P
我的学习方法是:Linux系统编程(看pdf笔记) Linux网络编程 WebServer 01P-17P Linux相关命令及操作 cp -a dirname1 dirname2 复制目录 cp -r dirname1 dirname2 递归复制目录 1 到目录 2 这里-a 和-r 的差别在于,-a 是完全复制…...
【HuggingFace】Transformers(V4.34.0 稳定)支持的模型
Transformer 4.43.40 版本是自然语言处理领域的一个重要工具包,为开发者提供了丰富的预训练模型资源,可以用于各种文本处理任务。在这个版本中,Transformer 支持了众多模型,每个模型都具有不同的优势和适用领域。下面是一个 Trans…...
oracle 导入数据泵常用语句
oracle常用语句 window10 导出导入数据泵文件导入数据泵文件导出数据泵文件 oracle表空间查询、剩余空间查询查询表空间大小及对应文件查询各个表空间大小扩充表空间 window10 导出导入数据泵文件 导入数据泵文件 首先将数据泵文件放在oracle安装得对应位置,例如&…...
tensorflow中的常见方法
1.tf.argmax(input,axis) tf.argmax(input,axis)根据axis取值的不同返回每行或者每列最大值的索引。 axis 0: 比较每一列的元素,将每一列最大元素所在的索引记录下来,最后输出每一列最大元素所在的索引数组。 test[0] array([1, 2, 3]) test[1] …...
【周末闲谈】“PHP是最好的语言”这个梗是怎么来的?
个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言最早的出处关于PHP语言优点缺点网络评价 总结 前言 …...
四位十进制数字频率计VHDL,仿真视频、代码
名称:四位十进制数字频率计VHDL,quartus仿真 软件:Quartus 语言:VHDL 代码功能: 使用直接测频法测量信号频率,测频范围为1~9999Hz,具有超量程报警功能 演示视频:四位十进制数字频…...
Unity实现设计模式——策略模式
Unity实现设计模式——策略模式 策略模式是一种定义一些列算法的方法,这些所有的算法都是完成相同的工作,只是实现不同。它可以通过相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。 策略模式的 Strategy 类层次为 Contex…...
C++基础——数据类型
1 概述 在创建变量和常量的时候,都需要指定其数据类型,以便为其分配合适的内存空间。 其中宏常量不需要指定类型,是因为宏定义是字符替换。 2 整型 整型表示的是整数,C中的整型有以下几种: 数据类型占用空间取值范…...
文本自动输入/删除的加载动画效果
效果展示 CSS 知识点 绕矩形四周跑的光柱动画实现animation 属性的 steps 属性值运用 页面基础结构实现 <div class"loader"><!-- span 标签是围绕矩形四周的光柱 --><span></span><span></span><span></span>&l…...
PHP8的匿名类-PHP8知识详解
PHP8支持通过new class 来实例化一个匿名类。所谓匿名类,就是指没有名称的类,只能在创建时使用new语句来声明它们。 匿名类是一种没有命名的即时类,可以用于简单的对象封装和实现接口。 以下是PHP 8中匿名类的基本语法示例: $ob…...
WebKit Inside: CSS 样式表的匹配时机
WebKit Inside: CSS 的解析 介绍了 CSS 样式表的解析过程,这篇文章继续介绍 CSS 的匹配时机。 无外部样式表 内部样式表和行内样式表本身就在 HTML 里面,解析 HTML 标签构建 DOM 树时内部样式表和行内样式就会被解析完毕。因此如果 HTML 里面只有内部样式…...
TurboWarp Packager:让Scratch作品突破平台限制的跨平台打包工具
TurboWarp Packager:让Scratch作品突破平台限制的跨平台打包工具 【免费下载链接】packager Converts Scratch projects into HTML files, zip archives, or executable programs for Windows, macOS, and Linux. 项目地址: https://gitcode.com/gh_mirrors/pack/…...
深入解析GD32/STM32 PWM中断:中央对齐模式的应用与实现
1. PWM中断与中央对齐模式的核心概念 第一次接触PWM中断时,我盯着示波器上跳动的波形发愣——明明配置了中断,为什么触发时机总是不对?后来才发现是计数模式没选对。中央对齐模式(Center-Aligned Mode)在电机控制、LED…...
PasteMD助力程序员提效:代码片段/日志/报错信息一键转高亮Markdown
PasteMD助力程序员提效:代码片段/日志/报错信息一键转高亮Markdown 1. 引言:从杂乱文本到优雅文档的烦恼 你有没有过这样的经历?在技术讨论群里,同事发来一段报错日志,密密麻麻的堆栈信息挤在一起,看得人…...
内容解锁工具:突破信息壁垒的智能解决方案
内容解锁工具:突破信息壁垒的智能解决方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,知识获取的不平等现象日益凸显。当研究人员急…...
ROS机器人开发实战:利用tf2库高效处理四元数、欧拉角与旋转矩阵的转换
1. 为什么机器人开发需要处理多种姿态表示 在机器人开发中,我们经常需要处理各种姿态数据。无论是移动机器人的定位信息、机械臂末端执行器的位姿,还是传感器数据的融合,都离不开对物体在三维空间中位置和朝向的描述。但有趣的是,…...
Guohua Diffusion 快速入门:三步完成星图GPU平台一键部署
Guohua Diffusion 快速入门:三步完成星图GPU平台一键部署 想试试AI绘画,但被复杂的安装和环境配置劝退?今天,咱们就来聊聊怎么用最简单的方式,在星图GPU平台上玩转Guohua Diffusion。整个过程,你只需要点三…...
RexUniNLU开源镜像免配置教程:自动下载权重+端口映射一步到位
RexUniNLU开源镜像免配置教程:自动下载权重端口映射一步到位 1. 这不是另一个NLP工具,而是一站式中文语义理解中枢 你有没有遇到过这样的情况:想快速验证一段中文文本里藏着多少信息——谁说了什么、发生了什么事、情绪是好是坏、背后有哪些…...
用PyTorch和snnTorch库5分钟搞定一个脉冲神经网络(SNN)手写数字识别Demo
用PyTorch和snnTorch库5分钟搞定一个脉冲神经网络(SNN)手写数字识别Demo 脉冲神经网络(SNN)作为第三代神经网络模型,正逐渐从学术研究走向工业应用。与传统人工神经网络不同,SNN通过模拟生物神经元的脉冲发…...
Java异常体系全景解析:从Checked与Unchecked的本质区别到最佳实践
Java异常体系全景解析:从Checked与Unchecked的本质区别到最佳实践在Java的浩瀚生态中,异常处理机制无疑是构建健壮、可靠应用程序的基石。它不仅仅是简单的错误捕获,更是一套精密的契约系统,决定了程序在遭遇非预期状态时如何“表…...
Numpy第十章 统计相关
一.次序统计1.计算最小值 numpy.amin()函数功能:返回数组或沿指定轴的最小值。函数:numpy.amin(a[, axisNone, outNone, keepdimsnp._NoValue,alnp._NoValue, wherenp._NoValue])参数:a:输入数组。axis&…...
