[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%A2

POST: 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.mfbz.cn/a/320016.html

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

相关文章

【AIGC】AnimateDiff:无需定制化微调的动画化个性化的文生图模型

前言 Animatediff是一个有效的框架将文本到图像模型扩展到动画生成器中&#xff0c;无需针对特定模型进行调整。只要在大型视频数据集中学习到运动先验知识。AnimateDiff就可以插入到个性化的文生图模型中&#xff0c;与Civitai和Huggingface的文生图模型兼容&#xff0c;也可…

docker部署私人云盘

目录 1.安装 2.登陆 1.安装 mkdir -p /opt/alist docker run -d --restartalways -v /opt/alist:/opt/alist/data -p 5244:5244 --name"alist" xhofe/alist:latest 2.登陆 ip:5224 默认账户admin 密码在日志中

逆水行舟 不进则退

目录 一、前言 二、2023年度总结 三、2024展望未来 一、前言 这是我从工作以来到现在最喜欢的一句话&#xff0c;我想把这句话送给自己也想送给大家。 2019年7月实习到现在已经过去了四年多&#xff0c;进入2024年也迎来了我工作生涯的第五个年头。 在这个行业里&#xff…

《教育界》期刊怎么投稿发表论文?

《教育界》是国家新闻出版总署批准的正规教育类期刊&#xff0c;由广西师范大学主管&#xff0c;广西师范大学出版社集团有限公司主办&#xff0c;面向国内外公开发行&#xff0c;旨在追踪教育新动向&#xff0c;探讨教育改革与管理、办学与教育教学经验等&#xff0c;为广大一…

Linux scp命令 服务器之间通讯

目录 一. scp命令简介二. 本地服务器文件传输到远程服务器三. 本地服务器文件夹传输到远程服务器 一. scp命令简介 scp&#xff08;Secure Copy Protocol&#xff09;是用于在Unix或Linux系统之间安全地复制文件或目录的命令。 它使用SSH&#xff08;Secure Shell&#xff09;…

等保测评流程是什么样的?测评周期多久?

等保测评流程是什么样的&#xff1f;测评周期多久&#xff1f; 等保测评一般分成五个阶段&#xff0c;定级、备案、测评、整改、监督检查。 1.定级阶段 针对用户的信息系统有等保专家进行定级&#xff0c;一般常见的系统就是三级系统或者是二级系统。在这里有一个小的区分&am…

【ArcGIS微课1000例】0088:计算城市建筑物朝向(矩形角度)

文章目录 一、实验描述二、实验数据三、角度计算1. 添加字段2. 计算角度四、方向计算一、实验描述 矩形要素具有长轴和短轴,其长轴方向也称为矩形面的主角度,可用于确定面要素的走向趋势。根据该方向参数,可以对具有矩形特征的地理对象进行方向分析,且适用于很多应用场景,…

8.1 Centos安装部署Redis

文章目录 前言一、下载Redis二、编译Redis三、配置redis.conf四、启动Redis服务端五、启动Redis客户端测试前言 本文将手把手演示在CentOS7上安装部署Redis。 一、下载Redis 可以使用wget命令进行下载,这里下载到/app目录 wget http://download.redis.io/releases/redis-5.…

Python爬虫学习笔记(一)---Python入门

一、pycharm的安装及使用二、python的基础使用1、字符串连接2、单双引号转义3、换行4、三引号跨行字符串5、命名规则6、注释7、 优先级not>and>or8、列表&#xff08;list&#xff09;9、字典&#xff08;dictionary&#xff09;10、元组&#xff08;tuple&#xff09;11…

计算机毕业设计 | SpringBoot+vue的医院门诊预约挂号系统(附源码)

1&#xff0c;绪论 项目背景 预约挂号&#xff0c;挂专家号更是“一号难求”&#xff0c;这是当前许多大型医院的普遍现象。预约挂号是各地近年来开展的一项便民就医服务&#xff0c;旨在缩短看病流程&#xff0c;节约患者时间。这种预约挂号大多通过医疗机构提供的电话或者网…

视频号小店发展前景怎样?适合新手入驻吗?

我是电商珠珠 视频号于22年7月发展了属于自己的平台-视频号小店。作为一个发展了才一年的平台来说&#xff0c;很多人都不敢入驻&#xff0c;害怕它很快就会垮掉。 我们团队在22年10月的时候&#xff0c;开始入驻其中。发现它的玩法和抖音小店相比并没有什么两样。 在刚开始…

电脑定时关机应用

这是一个Python应用。家里卧室装了新电视&#xff0c;HDMI连接笔记本追剧还是很愉快的。可是经常睡着&#xff0c;自然忘了关机。搜了一大圈&#xff0c;都是用命令行或者bat解决。商店里的应用也不好用&#xff0c;有些还收费。于是萌生了自己写一个定时关机应用的想法。利用N…

Linux学习之网络编程3(高并发服务器)

写在前面 Linux网络编程我是看视频学的&#xff0c;Linux网络编程&#xff0c;看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 高并发服务器 问题&#xff1a; 根据上一个笔记&#xff0c;我们可以写出一个简单的服务端…

研0或研一|如何快速入门深度学习?

一、经验建议 1️⃣课程篇 直接上手B站【小土堆PyTorch深度学习快速入门教程】&#xff0c;共计9h50min左右&#xff0c;预计一周就可以学完&#xff0c;比较偏向理论和实践相结合跟李沐学AI B站【动手学深度学习 PyTorch版】刘二大人B站【PyTorch深度学习实践】&#xff0c;…

springboot集成jsp

首先pom中引入依赖包 <!--引入servlet--> <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId> </dependency> <!--引入jstl标签库--> <dependency><groupId>javax.servle…

echarts 3D地图

vueecharts 3D地图,可自定义地图背景底图。鼠标放上显示弹窗&#xff0c;弹窗自动切换。 <template><div id"gbznt" class"gbznt" ref"gbznt"><img class"mapBg" src"../../../img/propertyTransaction/echart-bg…

二进制与十六进制,二进制与八进制之间的相互转换技巧

目录 1.二进制转换为八进制 2.八进制转换为二进制 3.二进制转换为十六进制 4.十六进制转换为二进制 1.二进制转换为八进制 转换为8进制 第一步&#xff1a;以小数点为分界线&#xff0c;整数部分自右向左&#xff0c;小数部分自左向右每3位取成1位&#xff1a; 整数部分…

码蹄集新手村:绝对值,输入各种类型数,平面、空间三角形面积(坐标)

1.绝对值 虽然用if else判断是否小于0&#xff0c;小于0取相反数也能解决&#xff0c;但可能会出现错误&#xff0c;尽量用fabs()函数 2. 输入各种类型数所需的常见英文字母 字符 %c double %lf float %f 3.平面三角形面积&#xff08;坐标&#xff09; 记住三角形面积公…

人物故事:从留美复旦流浪博士,分享一位杰出C++开发者的故事

近日留美复旦流浪博士的事迹冲上热搜。通过多方渠道消息来源&#xff0c;据说该流浪博士在1985年&#xff0c;15岁还在读高一的他&#xff0c;就已经被复旦大学少年班物理学专业录取。在复旦大学就读期间曾获得李政道奖学金。1988年&#xff0c;19岁时从复旦大学通过第九届CUSP…

【并发】共享模型之管程

共享模型之管程 共享问题 package 并发;public class Test1 {static int a0;public static void main(String[] args) throws InterruptedException {Thread t1new Thread(new Runnable() {Overridepublic void run() {for(int i0;i<5000;i){a;}}});Thread t2new Thread(n…