[NSSCTF Round#16 Basic]RCE但是没有完全RCE

[NSSCTF Round#16 Basic]RCE但是没有完全RCE

第一关

<?php
error_reporting(0);
highlight_file(__file__);
include('level2.php');
if (isset($_GET['md5_1']) && isset($_GET['md5_2'])) {if ((string)$_GET['md5_1'] !== (string)$_GET['md5_2'] && md5($_GET['md5_1']) === md5($_GET['md5_2'])) {if (isset($_POST['md5_3'])&&md5($_POST['md5_3']) == md5($_POST['md5_3'])) {echo $level2;} else {echo "您!!!!!那么现在阁下又该如何应对呢";}} else {echo "还在用传统方法????";}
} else {echo "来做做熟悉的MD5~";
}

这里会先把GET传参的参数md5_1和md5_2变成字符串,然后MD5函数处理要强等于;POST传参md5_3随便都行

payload

GET: ?md5_1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&md5_2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2POST: md5_3=1

来到第二关

 <?php
error_reporting(0);
highlight_file(__FILE__);
$shell = $_POST['shell'];
$cmd = $_GET['cmd'];
if(preg_match('/f|l|a|g|\*|\?/i',$cmd)){die("Hacker!!!!!!!!");
}
eval($shell($cmd)); 

逻辑就是接收参数然后正则匹配,如果没有则命令执行

这里有个之前一直不知道的知识点,就是如果代码为eval($shell($cmd)); ,想要利用system直接读取flag会发现正则绕不过去,如果在cmd参数的值包含了嵌套的函数就会仅仅被当成字符串从而无法解析,比如show_source('/flag')又或者是通过chr函数拼接的cat /flag。所以思路可以是找到参数shell中的函数可以解析cmd参数的嵌套函数,或者是直接system函数利用最直接的命令绕过(试验后发现走不通),又或者是绕过正则判断而使得eval函数命令执行的时候不报错。

第一个思路在做[ctfshow 元旦水友赛]的时候遇到,题目的版本为5.5.9利用assert函数结合show_source(‘/flag’)来读取,但是本题版本为7.3.4所以失败。不过我们可以试试利用数组绕过正则,然后如何让eval函数接收的参数为字符串而不是数组格式。这里引进array_pop函数,作用是删除数组中最后一个元素。但经过测试发现如果元素个数为一那么就是输出本身,结果如下

在这里插入图片描述

那么我们就可以实现RCE

在这里插入图片描述

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

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

相关文章

【KaTeX】math mode字体、特殊符号

★☆✦✧ ⋆ ★ ✶✪⟡⟢⟣⟠⋄ ∗ ✽⭒⭑ ★☆✦✧ \star\bigstar ✶✪ ⟡⟢⟣⟠⋄∗✽⭒⭑ ★☆✦✧⋆★✶✪⟡⟢⟣⟠⋄∗✽⭒⭑ ☿♀♁♂⚢⚣⚥⚦⚧⚨⚩⚭⚮⚯⧪⧬⧭⧳⧲⧱⧰⧯⧮ ☿♀♁♂ ⚢⚣⚥⚦⚧⚨⚩⚭⚮⚯⧪⧬⧭⧳⧲⧱⧰⧯⧮ ☿♀♁♂⚢⚣⚥⚦⚧⚨⚩⚭⚮⚯⧪⧬⧭⧳⧲…

Protecting Intellectual Property of Deep NeuralNetworks with Watermarking

保护深度神经网络的知识产权与数字水印技术 ABSTRACT 深度学习是当今人工智能服务的关键组成部分&#xff0c;在视觉分析、语音识别、自然语言处理等多个任务方面表现出色&#xff0c;为人类提供了接近人类水平的能力。构建一个生产级别的深度学习模型是一项非常复杂的任务&a…

Redis常用连接工具

RedisInsight 官网地址&#xff1a; RedisInsight | The Best Redis GUI Redis Desktop Manager 官网地址&#xff1a; RedisInsight | The Best Redis GUI 样式&#xff1a; QuickRedis 官网地址&#xff1a; QuickOfficial - QuickRedis 样式&#xff1a; AnotherRed…

ssm基于spring和vue开发的web新闻流媒体平台论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

xtu oj 1280 String Hash

题目描述 把字符串进行Hash&#xff0c;来判断字符串是否相等是一种很常见的技术。 对一个只含英文小写字母字符串进行Hash&#xff0c;一种比较简单的方法是把字符串看成一个26进制的数&#xff0c;a~z分别表示0~25&#xff0c;获得这个值后对某个素数p取模。但是因为a是0&am…

详解SpringCloud微服务技术栈:认识微服务、服务拆分与远程调用

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;首期文章 &#x1f4da;订阅专栏&#xff1a;微服务技术全家桶 希望文章对你们有所帮助 在此之前&#xff0c;耗时半个月&#x…

数据结构之bool类

bool类 bool 是布尔类。它是最简单的一个类&#xff0c;其取值有两种&#xff0c;1和O&#xff0c;即 True 和 False。可以这样简单地理解&#xff0c;除了1和0以及 True 和 False 的情况之外&#xff0c;但凡有值&#xff08;非空&#xff09;即为真&#xff0c;但凡无值&…

linux DHCP和DNS

DHCP dhcp 动态主机配置协议 dhcp工作原理 客户端 ------------------------------------------------->dhcp服务器 客户端会发送dhcp discover广播报文&#xff0c;寻找dhcp服务器 客户端 <-------------------------------------------------dhcp服务器 服务器收…

Java中的包机制、final和super关键字

一、包机制 关于java语言当中的包机制&#xff1a; 1.包又被称为package,java中引入package这种语法机制主要是为了方便程序的管理。 不同功能的类被分门别类放到不同的软件包当中&#xff0c;查找比较方便&#xff0c;管理比较方便&#xff0c;易维护。 2.怎么定义package呢…

第 7 章 排序算法

文章目录 7.1 排序算法的介绍7.3 算法的时间复杂度7.3.1 度量一个程序(算法)执行时间的两种方法7.3.2 时间频度7.3.3 时间复杂度7.3.4 常见的时间复杂度7.3.5 平均时间复杂度和最坏时间复杂度 7.4 算法的空间复杂度简介7.4.1 基本介绍 7.5 冒泡排序7.5.1 基本介绍7.5.2 演示冒泡…

Spring的纯注解配置

1、带改造的问题 我们发现&#xff0c;之所以我们现在离不开xml配置文件&#xff0c;是因为我们有一处很关键的配置&#xff0c;如果他要也能用注解配置&#xff0c;那么我们就可以脱离xml文件了&#xff1a; jdbc的配置 改造前&#xff1a; <context:property-placehol…

Redis的主从配置,哨兵模式,集群模式

目录 什么是主从复制&#xff1f; 主从复制的作用&#xff1f; 主从复制的流程&#xff1f; 搭建Redis的主从复制 安装Redis 环境准备 修改内核参数 安装Redis 定义systemd服务管理脚本 修改Redis配置文件&#xff08;Master节点操作&#xff09;192.168.17.25 修改Re…

js通过用 splice() 方法将一个数组插入到另一个数组的指定位置

在 JavaScript 中&#xff0c;可以使用 splice() 方法将一个数组插入到另一个数组的指定位置。splice() 方法用于向数组中添加或删除元素&#xff0c;并返回被删除的元素。 以下是一个示例代码&#xff1a; const array1 [1, 2, 3]; const array2 [4, 5, 6];const deletedE…

【数据库】聊聊MVCC机制与BufferPool缓存机制

上一篇文章&#xff0c;介绍了隔离级别&#xff0c;MySQL默认是使用可重复读&#xff0c;但是在可重复读的级别下&#xff0c;可能会出现幻读&#xff0c;也就是读取到另一个session添加的数据&#xff0c;那么除了配合使用间隙锁的方式&#xff0c;还使用了MVCC机制解决&#…

Linux重点

Linux命令的组成&#xff1f; a. 命令本身&#xff0c;选项&#xff0c;参数。查看的两个操作 a. cat 适合小文件 b. more分页查询适合中文件创建文件的选项有啥&#xff1f;创建文件的小技巧 a. 选项有-p b. 不管是否创建创建递进的文件&#xff0c;先给-p加上&#xff0c;加上…

DSL查询文档--查询结果处理

排序 elasticsearch默认是根据相关度算分&#xff08;_score&#xff09;来排序&#xff0c;但是也支持自定义方式对搜索结果排序。可以排序字段类型有&#xff1a;keyword类型、数值类型、地理坐标类型、日期类型等。 普通字段排序 keyword、数值、日期类型排序的语法基本一…

Android 实现获取集合中出现重复数据的值和数量

方法一&#xff1a;使用HashMap和HashSet 创建一个HashMap&#xff0c;用于存储集合中的元素及其出现次数。 Map<String, Integer> map new HashMap<>();遍历集合&#xff0c;将每个元素作为键&#xff0c;将其出现次数作为值添加到HashMap中。 for (String it…

【grid】pytorch中的Flow_filed,MES,affine_gridHGRID,GRID_SAMPLE详解

grid in Pytorch 官方链接&#xff1a; https://pytorch.org/docs/stable/generated/torch.nn.functional.grid_sample.html#torch.nn.functional.grid_sample https://pytorch.org/docs/stable/generated/torch.nn.functional.grid_sample.html#torch-nn-functional-grid-sa…

SSH远程访问与控制

ssh优点 数据传输是加密的&#xff0c;可以防止信息泄露 数据传输是压缩的&#xff0c;可以提高传输速度 作用 sshd 服务使用 SSH 协议可以用来进行远程控制&#xff0c;或在计算机之间传送文件。 ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务&#xff08;文件传…

对C语言的理解

1.计算机语言 就是我们人类与计算机进行交流的媒介。我们可以使用编程语言对计算机下达命令&#xff0c;从而让计算机完成我们所需要的功能。 语言 语法 逻辑 计算机语言有很多种。如&#xff1a;C 、C、Java、Go、JavaScript、Python&#xff0c;Scala等。 2.计算机语言简史…