web:[WUSTCTF2020]朴实无华
题目

点开页面显示如下

页面显示了一行报错:Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:3) in /var/www/html/index.php on line 4
意思为不能修改报头信息-报头已经发送(输出开始于/var/www/html/index.php:3)在/var/www/html/index.php第4行
查看源代码也没有其他线索,用dirsearch扫一下看看

扫到一个robots.txt,访问之后页面显示如下
访问fAke_flagggg.php,显示如下

查看源码什么也没有,抓包试一下

访问这个页面,出现了乱码
用的火狐,按alt查找修改文字编码就可以了,显示如下

<?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("去非洲吧");
}
?>
去非洲吧
level1代码中,intval()函数将$num转换为整数类型,并进行比较判断,如果$num小于2020且$num+1大于2021,则输出消息“我不经意......”
关键在于intval函数,intval函数参数填入科学计数法的字符串,会以e前面的数字作为返回值而对于科学计数法+数字则会返回字符串类型
通过

level2是md5,找到一串数字使它md5加密后的数值和原来的相等,php具有弱类型,==进行比较的时候会先将字符串类型转化为相同,再比较
典型的md5绕过,绕过原理就是加密前后都是0e开头的字符串
通过

level3代码中
-
使用
strstr($get_flag, " ")函数检查$get_flag是否包含空格。如果$get_flag中不包含空格,则执行下面的代码;否则,输出一条消息"快到非洲了"并终止程序的执行。 -
如果
$get_flag中不包含空格,则使用str_ireplace("cat", "wctf2020", $get_flag)函数将$get_flag中的所有"cat"替换为"wctf2020",并将结果重新赋值给$get_flag。
很明显,这里过滤了cat命令,但是查看文件的linux命令还有很多,例如tac less more tail都可以作为替代。
空格绕过可以使用$IFS$9
已经知道了flag文件在当前目录下

所以最终的payload为
?num=2e4&md5=0e215962017&get_flag=tac$IFS$9fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

参考文章链接:
[WUSTCTF2020]朴实无华-CSDN博客
练[WUSTCTF2020]朴实无华_生而逢时的博客-CSDN博客
相关文章:
web:[WUSTCTF2020]朴实无华
题目 点开页面显示如下 页面显示了一行报错:Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:3) in /var/www/html/index.php on line 4 意思为不能修改报头信息-报头已经发送(输出开始于/var/www/html/i…...
云原生安全工具汇总(docker、k8s、Kubernetes、Git仓库)
目录 Metarget:云原生靶机环境 CDK:容器环境定制的渗透测试工具 container-escape-check:容器逃逸检测...
基于51单片机超声波测距汽车避障系统
**单片机设计介绍, 基于51单片机超声波测距汽车避障系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的超声波测距汽车避障系统是一种用于帮助汽车避免碰撞和发生事故的设备,以下是一个基本…...
git的使用:本地git下载、sshkey的添加、github仓库创建及文件上传
一、github创建账号 即github注册账号,登录github官网,根据提示注册即可 github官网 二、git客户端下载安装 已有很多git下载安装的博文了,在此就不赘述 三、sshkey的生成与添加 1、sshkey的生成以及查看 // sshkey的生成命令ÿ…...
增量有余、后劲不足,星途汽车10月份销量环比下降3.9%
撰稿|行星 来源|贝多财经 近日,奇瑞集团发布了10月销量月报。报告显示,奇瑞集团于2023年10月销售汽车20.03万辆,同比增长50.8%,单月销量首次突破20万辆;2023年前10个月的累计销量为145.36辆,同比增长41.6…...
只考数据结构,计算机评级C+,成都信息工程大学考情分析
成都信息工程大学(C) 考研难度(☆☆) 内容:23考情概况(拟录取和复试分析)、院校概况、24专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1715字,预计阅读:3分钟 2023考情概况 …...
Screen操作
detach:detach是指将当前运行的Screen会话从终端分离(detach),使其在后台继续运行而不受当前终端窗口的影响。这样,你可以在一个终端窗口中启动一个Screen会话,然后在需要的时候将其分离,使其在…...
js基础知识
1. beforeCreate 初始化界面前 : 在当前阶段data、methods、computed以及watch上的数据和方法都不能被访问。 2. created 初始化界面后 : 在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用数据,更改数据,在这里更…...
Vue常见的实现tab切换的两种方法
目录 方法一:事件绑定属性绑定 效果图 完整代码 方法二:属性绑定 动态组件 component标签 效果图 完整代码 方法一:事件绑定属性绑定 效果图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta c…...
React16中打印事件对象取不到值的现象及其原因分析
React16中打印事件对象取不到值的现象及其原因分析 一、背景 在最近的开发过程中,遇到了一个看起来匪夷所思的问题❓: <Inputplaceholder"请输入"onChange{(e) > {console.log(e:, e)}}onKeyDown{handleKeyDown} />此时按理来说我…...
绝对干货-讲讲设计模式之创建型设计模式的本质
创建型模式(Creational Patterns):创建型模式关注对象的创建机制,包括了如何实例化一个对象或者一组对象的方法。Java中的创建型模式有:单例模式(Singleton Pattern)、工厂模式(简单…...
机器人规划算法——movebase导航框架源码分析
这里对MoveBase类的类成员进行了声明,以下为比较重要的几个类成员函数。 构造函数 MoveBase::MoveBase | 初始化Action 控制主体 MoveBase::executeCb收到目标,触发全局规划线程,循环执行局部规划 全局规划线程 void MoveBase::planThread |…...
Android:Google三方库之Firebase集成详细步骤(三)
Cloud Messaging 1、清单文件配置 a、(可选)一项扩展 FirebaseMessagingService 的服务。除了接收通知外,如果您还希望在后台应用中进行消息处理,则必须添加此服务。例如,您需要在前台应用中接收通知、接收数据载荷以及…...
2023年中国边缘计算网关现状及发展趋势分析[图]
边缘计算网关是一种可以在设备上运行本地计算、消息通信、数据缓存等功能的工业智能网关,可以在无需联网的情况下实现设备的本地联动以及数据处理分析。边缘计算网关是一种连接物联网设备和云端服务的关键技术,它可以在设备和云端之间建立一个安全、高效…...
LeetCode78.子集
这道题如果用暴力法几乎是不可能解出来的,因为情况太复杂了,但是一旦用上递归回溯就会轻松很多,先上代码: class Solution {List<List<Integer>> result new ArrayList<List<Integer>>();List<Integ…...
不是默认进入Linux|总是自动进入windows系统
问题描述 不是默认进入Linux系统无法主动出现boot引导自动进入windows系统 尝试无效 修复引导无效重装Grub无效重装系统无效 环境 Ubuntu 22.04 LST微星主板 解决方案 修改引导顺序: 开机狂按Del键,进入BIOS系统,左侧Settings 设置&…...
【面经八股】搜广推方向:常见面试题(二)
【面经&八股】搜广推方向:常见面试题(二) 文章目录 【面经&八股】搜广推方向:常见面试题(二)1. FTRL 是什么?(Follow The Regularized Leader)2. 梯度下降方法3. 推荐系统中常见的Embedding方法有哪些?4. Embedding与推荐系统有哪些结合5. FM 和 FFM6. FNN7. 深…...
机器学习与药物筛选的心得体会
机器学习在药物设计里面的应用可以说还是比较常见的,尤其是搞计算的都会或多或少的涉及到这块。比如国内做这块比较多的,浙江大学的侯廷军教授,北京化工大学的闫爱霞教授,华东理工大学的几个做模拟计算的老师,上海药物…...
初识数据结构
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 熬过了我们不想要的生活…...
【阿里云】图像识别 智能分类识别 增加网络控制功能点(三)
一、增加网络控制功能 实现需求TCP 心跳机制解决Soket异常断开问题 二、Linux内核提供了通过sysctl命令查看和配置TCP KeepAlive参数的方法。 查看当前系统的TCP KeepAlive参数修改TCP KeepAlive参数 三、C语言实现TCP KeepAlive功能 四、setsockopt用于设置套接字选项的系…...
如何快速掌握Node.js MySQL驱动:纯JavaScript实现的终极指南
如何快速掌握Node.js MySQL驱动:纯JavaScript实现的终极指南 【免费下载链接】mysql A pure node.js JavaScript Client implementing the MySQL protocol. 项目地址: https://gitcode.com/gh_mirrors/my/mysql 前言 在Node.js生态中,数据库连接…...
Javadoc自动生成终极指南:告别手动注释的烦恼
Javadoc自动生成终极指南:告别手动注释的烦恼 【免费下载链接】easy_javadoc IntelliJ IDEA 插件,自动生成javadoc文档注释 项目地址: https://gitcode.com/gh_mirrors/ea/easy_javadoc 作为Java开发者,你是否还在为编写规范的Javadoc…...
从BERT到GPT:预训练语言模型的技术演进史
一场改变软件测试范式的革命2018年,当谷歌发布BERT模型时,软件测试领域并未意识到这项技术将如何重塑自动化测试工具的设计逻辑。三年后,GPT-3的诞生让测试脚本自动生成从实验室走向工程实践。本文以软件测试工程师的视角,剖析预训…...
Matlab r2023b Simulink 子系统封面自定义指南
1. 为什么需要自定义Simulink子系统封面? 作为一个从零开始学习Matlab Simulink的新手,我最初完全不明白为什么要在子系统上加封面。直到参与了一个机器人控制系统的团队项目,才深刻体会到这个功能的价值。想象一下,当你打开一个包…...
Microsoft Agent Framework Skills 执行 Scripts(实战指南)畔
本文能帮你解决什么? 1. 搞懂FastAPI异步(async/await)到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑(比如阻塞操作、数据库连接池耗尽、GIL限制)。 …...
三层三列立体停车库的PLC实战开发手记
基于PLC的升降横移立体停车库的设计,设计一个基于西门子S7-200 PLC控制核心的,三层三列,九个车位的立体停车控制系统。 目录\\t3 1 绪 论\\t4 2 设计要求\\t5 3 硬件设计\\t8 3.1 PLC型号的选择和确定\\t8 3.2 主电路设计\\t8 3.3 控制电路…...
问卷星自动化填写避坑指南:如何避免触发二次验证?
问卷星自动化填写实战:规避二次验证的7个核心策略 去年帮朋友处理一个市场调研项目时,我们遇到了一个棘手问题——在批量填写问卷过程中频繁触发二次验证,导致自动化流程中断。经过两周的反复测试和参数调整,最终总结出一套行之有…...
密码学·顶级会议与资源导航
1. 密码学研究的黄金殿堂:三大顶级会议详解 第一次接触密码学领域时,最让我困惑的就是如何找到高质量的学术资源。直到导师告诉我:"盯住三大会议,你就抓住了密码学的命脉。"这句话彻底改变了我的研究方向。Crypto、Euro…...
如何处理phpMyAdmin提示配置文件读取失败_文件属组与读写权限调整
根本原因是PHP进程无法读取config.inc.php文件,主因是系统级权限问题:Web服务器用户(如www-data)无读取权限,或文件权限为666/660等不安全组合,或SELinux/AppArmor拦截,或符号链接目标权限错误。…...
别再手动复制SSH公钥了,Linux服务器一键从GitHub快速导入公钥捕
一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...
