[安洵杯 2019]easy_web 详细题解

知识点:

编码转换

命令执行

linux空格_关键字绕过

打开页面 发现url 是 /index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=


有img参数和cmd参数  cmd参数是没赋值的,随便赋值为123456   页面没有反应
鼠标移动到图片下面时发现有东西,当然直接查看页面源代码也可以发现


尝试输入ls  回显变成了 forbid ~  被禁止了
回过头来观察img参数,TXpVek5UTTFNbVUzTURabE5qYz0 

很像base64编码 解码一次得到MzUzNTM1MmU3MDZlNjc=  更像base64了
再次解码  3535352e706e67 格式很像16进制字符,转为ascii字符串 得到555.png

或者直接用一把梭工具得到结果,使用ciphey 或者 cyberchef 都可以一步到位

 

直接访问555.png没有信息,img换成555.png也没用,cmd换成555.png也没用

尝试按照题目中的格式,对一个文件进行16进制转换,然后再进行两次base64编码 传给img参数
把index.php 按照上述操作编码得到结果   TmprMlpUWTBOalUzT0RKbE56QTJPRGN3
传给img参数之后查看源码,复制图片对应的base64编码值,解码得到index.php源码

<?php
error_reporting(E_ALL || ~ E_NOTICE);
header('content-type:text/html;charset=utf-8');
$cmd = $_GET['cmd'];
if (!isset($_GET['img']) || !isset($_GET['cmd'])) header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');
$file = hex2bin(base64_decode(base64_decode($_GET['img'])));$file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);
if (preg_match("/flag/i", $file)) {echo '<img src ="./ctf3.jpeg">';die("xixiï½ no flag");
} else {$txt = base64_encode(file_get_contents($file));echo "<img src='data:image/gif;base64," . $txt . "'></img>";echo "<br>";
}
echo $cmd;
echo "<br>";
if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {echo("forbid ~");echo "<br>";
} else {if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {echo `$cmd`;} else {echo ("md5 is funny ~");}
}

对cmd参数进行了正则过滤,禁止了大多数查看文件的命令,其实还可以用sort

其中的\xA0过滤了16进制为0xa0的字符,也就是空格,所以需要绕过空格,同时过滤了$,不能使用${IFS} $IFS$1这种格式,%09尝试发现不可行,可以用%20 代替空格

这里正则还过滤了很多符号 看起来  |\\|\\\\|   这个部分过滤了\  其实并没有
|\\|\\\\|  这里先经过字符串解析为 |\|\\| 再经过正则表达式解析变成 | |\ |  所以这里其实是过滤了 |\
但是这里输入|\也会被禁止,是因为后面禁止了|    单独输入\ 是不会被过滤的

如果不清楚php字符串和正则表达式中的转义规则和操作,可以看一下我这篇文章

详解PHP正则表达式中的转义操作_php特殊字符转义-CSDN博客文章浏览阅读1.5k次,点赞39次,收藏19次。在 PHP 正则表达式中,有许多特殊字符具有特定的意义。这些特殊字符通常用于定义匹配模式的一部分,或者改变匹配的行为.比如,如果希望匹配一个"*"字符的字面意思,就需要在模式中写为 "\*",表示匹配的是*星号本身,而不是它的特殊含义,如果要匹配 \ 反斜线本身,也需要一个转义符转义 也就是"\\" 同时反斜线在 PHP 字符串 中也有特殊含义,因此也需要反斜线 \进行转义,最后要写成 "\\\\" 下面就探究一下PHP字符串和正则表达式中的转义操作_php特殊字符转义https://blog.csdn.net/weixin_73904941/article/details/143189318?spm=1001.2014.3001.5501

既然没过滤符号\ 正则匹配函数用的是preg_match,因此这里的过滤都是很容易绕过的

可以使用l\s代替ls绕过匹配,在preg_match函数中效果是一样的 cat命令也可以c\at这样绕过  
这里过滤了单双引号 所以不能用 l''s绕过

if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {echo `$cmd`;

这里强制变成string类型再进行比较,如果传入的是数组结果就都转换成array了,所以不能数组绕过,而且md5还是强比较,所以进行md5碰撞,让两个值md5加密后相等

a=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  
b=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

这里用hackbar传参我自己测试是不行的,得用burpsuite抓包传参,这里img参数的值没影响


查看根目录下文件,空格用%20代替    l\s%20/  发现flag文件
c\at%20/flag    或者  sort%20/flag  都可以得到flag

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

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

相关文章

第2章 数据的表示和运算

王道学习 考纲内容 &#xff08;一&#xff09;数制与编码 进位计数制及其相互转换&#xff1b;定点数的编码表示 &#xff08;二&#xff09;运算方法和运算电路 基本运算部件&#xff1a;加法器&#xff1b;算术逻辑单元&#xff08;ALU&#xff09;…

Web3 游戏周报(11.03 - 11.09)

回顾上周的区块链游戏概况&#xff0c;查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【11.03 - 11.09】Web3 游戏行业动态&#xff1a; Ton Accelerator 推出名为「Synergy」的 500 万美元计划&#xff0c;旨在推动跨链创新&#xff0c;创造 TON 用户与 EVM 网络适应…

CHS许可管理系统

在数字化时代&#xff0c;软件已成为企业运营的核心。为确保软件的合规使用&#xff0c;一个高效、智能的许可管理系统至关重要。CHS许可管理系统正是这样一款专为现代企业设计的软件合规管理解决方案&#xff0c;旨在帮助企业轻松应对软件许可管理的挑战。 一、智能许可管理&…

数据分析:16s差异分析DESeq2 | Corncob | MaAsLin2 | ALDEx2

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍DESeq2原理计算步骤结果Corncob原理计算步骤结果MaAsLin2原理计算步骤结果ALDEx2原理计算步骤结果加载R包数据链接数据预处理微生物数据样本信息提取物种名称过滤零值保留结果读取…

【Android】ubutun 创建Androidstudio桌面快捷方式

此方法不仅适合Androidstudio&#xff0c;其他应用的快捷方式创建同理。 创建桌面快捷方式 进入桌面 cd ~/Desktop创建.desktop文件 touch androidStudio.desktop编辑.desktop文件 [Desktop Entry] TypeApplication Terminalfalse NameAndroid Studio Comment android stu…

Apache POI 操作Word常用方法

系列文章目录 一、Java使用Apache POI导出excel 二、Apache POI 操作Excel常用方法 三、Apache poi 拆分单元格并赋值 四、使用easypoi模板方法导出excel 五、Apache poi给excel单元格添加下拉框或数据验证 六、Apache poi操作Word常用方法 文章目录 系列文章目录一、介绍二、…

你对安装在自己网站上的wordpress插件了解吗?

有不少用wordpress建站的人&#xff0c;喜欢用插件实现一些功能&#xff0c;使用插件是可以很方便的实现一些功能&#xff0c;但是&#xff0c;使用插件也会带来不少的问题。关于这个&#xff0c;这里就不讲了&#xff0c;网上可以搜索出一堆相关的内容来&#xff0c;这里只提出…

H.264/H.265播放器EasyPlayer.js无插件H5播放器关于WASM的压缩优化

在当今的Web开发领域&#xff0c;流媒体播放器的性能和效率至关重要&#xff0c;尤其是在处理大型视频文件和高分辨率视频流时。EasyPlayer.js RTSP播放器作为一款先进的流媒体播放器&#xff0c;它在WebAssembly&#xff08;WASM&#xff09;的压缩优化方面表现出色&#xff0…

使用 Python 从 REST URL 下载文件

使用 Python 从 REST URL 下载文件&#xff0c;可以使用 requests 库来简化文件的下载和保存过程。以下是一个示例代码&#xff0c;展示了如何从给定的 REST API 或 URL 下载文件并保存到本地。 1、问题背景 我们需要编写一个脚本&#xff0c;从一个支持 REST URL 的网站下载一…

EKS+EBS

下面我们介绍一下如何在EKS中实现动态、可扩展高效的存储 总共用到五个内容&#xff1a; 1、ebs卷&#xff1a;物理存储资源&#xff0c;充当底层存储基础 2、ebs csl驱动&#xff1a;桥梁&#xff0c;允许K8s管理ebs 3、PV和PVC: 通过匹配让Pod挂载所需的持久存储 4、Pod的挂载…

SpringMVC学习记录(三)之响应数据

SpringMVC学习记录&#xff08;三&#xff09;之响应数据 一、页面跳转控制1、快速返回模板视图2、转发和重定向 二、返回JSON数据1、前置准备2、ResponseBody 三、返回静态资源1、静态资源概念2、访问静态资源 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为h…

利用EasyPOI导出Excel,内容中含有图片

需求背景 做一个OCR识别的功能,需要导出原图和识别出来的结果的图纸,将数据导出. 解决方案 EasyPOI中可以用字节类型,导出图片,可以将图片存放的url 转成字节,然后导出.但是整个导出过程耗时较久。 具体代码 /*** 草图OCR识别记录-导出.** @param response: Http…

ubuntu 22.04 server python3 包 LTS

ubuntu 22.04 server python3 包 LTS sudo apt install -y python3-pip 不同的用户的&#xff0c;包的 安装位置不一样 系统默认目录 /usr/lib/python3/dist-packages 然后每个用户 各自的目录是 /home/mike/.local/lib/python3.10/site-packages sudo apt install -y pytho…

CSDN做样板,教我们如何为新网站引流

CSDN为我们做了个很好的例子&#xff0c;详细请看下图 亮点分析&#xff1a; 1. 未采用硬广在网站上进行引流。减少了给用户在直觉上的造成的反感&#xff1b; 2. 在GitHub的转跳页面中&#xff0c;植入额外的关联网站链接。虽然对用户解决问题没啥鸟用&#xff0c;但是人家能…

【JAVA】Java基础—面向对象编程:构造方法-构造方法的概念与案例

在Java编程中&#xff0c;构造方法是类的重要组成部分&#xff0c;用于初始化对象的状态&#xff0c;即在创建对象时设置对象的属性。构造方法初始在创建对象时提供必要的参数&#xff0c;从而使对象处于一个有效的状态。 重要性 对象初始化&#xff1a;构造方法允许我们在创建…

【鉴权】 Web 会话管理:Cookie、Session 和 Token 深度解析

目录 引言一、Web 会话管理的基本概念1.1 Cookie、Session 和 Token1.2 为什么需要会话管理&#xff1f; 二、会话管理技术的比较2.1 Cookie 会话管理2.1.1 什么是 Cookie&#xff1f;2.1.2 Cookie 工作原理2.1.3 安全性问题2.1.4 最佳实践 2.2 Session 会话管理2.2.1 什么是 S…

什么是头皮EA(剥头皮EA)?

在许多外汇交易者的眼中&#xff0c;剥头皮交易一直是一个神秘的存在。一部分人认为它是一种“外汇禁招”&#xff0c;而另一部分人则认为它比日内交易更容易盈利。那么&#xff0c;外汇剥头皮到底是什么&#xff1f;它与点差之间又有怎样的关系&#xff1f;本文将对剥头皮交易…

1小时搞定魔乐平台AI应用的构建和离线复现

想象一下&#xff0c;只需一小时&#xff0c;你就能在魔乐平台上构建自己的AI应用&#xff0c;并在本地环境中完美复现。听起来是不是很诱人&#xff1f;今天&#xff0c;我们就来手把手教你如何快速上手魔乐社区的space服务&#xff0c;让你的AI创意变为现实。 一 前言&#x…

微服务架构面试内容整理-分布式配置管理-Nacos Config

Nacos Config 是 Nacos 提供的一个配置管理功能,专门用于动态管理应用的配置。在微服务架构中,Nacos Config 允许开发者集中管理和动态更新各个服务的配置,从而提升系统的灵活性和可维护性。以下是 Nacos Config 的主要特点、工作原理和使用场景: 主要特点 1. 动态配置管理…

yum安装zabbix5.0升级php到74的办法

【背景】 公司时不时有扫描漏洞,之前发现了php漏洞,因开启防火墙,限定IP+端口,暂时躲过升级;现在,老话重提,开启了KPI考核,躲是躲不过去的了,升级吧 【难题】 服务器为centos7,因操作系统问题,只能安装zabbix5.0。当时图省力,官网的办法,都是yum安装,很是简便。…