【攻防世界】easyphp

news2024/10/9 0:52:19

废话不多说,打开环境就是一大段的php代码,对于我一个小白来说,还是难阿!只能一点点琢磨构造payload的思路,当然也是在网上参考了别人的wp。记录下来也为了加深自己的印象,有事没事都能翻一翻,温故而知新嘛。

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

$a = $_GET['a'];
$b = $_GET['b'];

if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3){
    if(isset($b) && '8b184b' === substr(md5($b),-6,6)){
        $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){
    if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){
        $d = array_search("DGGJ", $c["n"]);
        $d === false?die("no..."):NULL;
        foreach($c["n"] as $key=>$val){
            $val==="DGGJ"?die("no......"):NULL;
        }
        $key2 = 1;
    }else{
        die("no hack");
    }
}else{
    die("no");
}

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

?> Emmm...

看最后一段,当key1和key2的值都为1时,才会返回flag的值。而key1和key2需要当a、b、c三个参数都满足条件时才会被赋值为1。

一段一段来分析,首先是a和b两个参数的要求。

if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3){
    if(isset($b) && '8b184b' === substr(md5($b),-6,6)){
        $key1 = 1;
        }else{
            die("Emmm...再想想");
        }
    }else{
    die("Emmm...");
}

a的值需要大于6000000但是长度却不能大于3,很容易能想到用科学计数法来表示,比如1e8、1e9都可以。

b的md5值的最后6位需为“8b184b”,这个除了写脚本爆破好像也不知道还有什么更好的办法了。==>md5(53724)

import hashlib
for i in range(100000):
    b=i.to_bytes(22, 'big')
    m=hashlib.md5(str(i).encode()).hexdigest()
    if(m[-6:]=="8b184b"):
        print(i)
        print(m)

接着看一下c

$c=(array)json_decode(@$_GET['c']);
if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){
    if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){
        $d = array_search("DGGJ", $c["n"]);
        $d === false?die("no..."):NULL;
        foreach($c["n"] as $key=>$val){
            $val==="DGGJ"?die("no......"):NULL;
        }
        $key2 = 1;
    }else{
        die("no hack");
    }
}else{
    die("no");
}

c是个json格式的参数,且m键对应的值不为数字的同时需要满足大于2022

is_numeric在php中判断参数是否是数值类型是否是数字或数字字符串。"2222a"会被判定为false。
如果“2222a”和2022比较,则可以看作2222与2022的比较;若为“a2222”,则会被认定为0。
因此这里m键对应的参数可以为“2333abc”,可以同时满足上述的条件。

n键对应的值为数组,个数为2,且数组里的第一个元素也为数组,即[[...],...]

再往下看,如果n键对应值里面没有DGGJ,则会被判定为false,直接die,但下面又说如果遍历到了DGGJ也会被直接die...

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。其实相当于键值与“DGGJ”进行比较,而 php中当一个数字与一个字符串/字符进行大小比较时,首先系统尝试将此字符串/字符转换为整型/浮点型,然后进行比较。所以当n键对应的值为数字且包含数字0的话,DGGJ被视为0,即可在”其中找到DGGJ“,返回True。

所以可以构造出c为{"m":"2333abc","n":[[0,1],0]}

综上

构造payload:

http://ip:port/?a=1e9&b=53724&c={"m":"2333abc","n":[[0,1],0]}

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

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

相关文章

快速入门OAuth2

1. 什么是OAuth2.0OAuth2.0是目前使用非常广泛的授权机制&#xff0c;用于授权第三方应用获取用户的数据。举例说明&#xff1a;用户可以通过选择其他登录方式来使用gitee&#xff0c;这里就使用到了第三方认证。来自RFC 6749OAuth 引入了一个授权层&#xff0c;用来分离两种不…

2023年Verasity路线图深度分析

Verasity最近发布了迄今为止最详细和雄心勃勃的2023年路线图之一。它主要集中在VeraViews的商业目标&#xff0c;以及VeraCard的推出&#xff0c;它充满了产品更新和令人兴奋的新功能&#xff0c;既为我们的企业对企业&#xff08;B2B&#xff09;产品&#xff0c;也为你&#…

解决PowerShell或vscode无法启动yarn的问题

问题现象&#xff1a;在PowerShell中启动yarn时报错&#xff1a;yarn : 无法加载文件 C:\Users\{{username}}\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅https:/go.microsoft.com/fwlink/?LinkID135170 中的 about…

DL@starter@Perceptron感知机@简单神经网络

文章目录感知机简单感知机基础形式偏置值形式逻辑门感知机机器学习的任务(单层)感知机的局限线性和非线性多层感知机从与非门到计算机小结从感知机到神经网络激活函数&#x1f388;非线性激活函数step 函数阶跃函数的实现(numpy)sigmoid functionsigmoid函数sigmoid 函数和阶跃…

PHP前后分离接口加密探讨( AES+RSA )

参考文章: php之RSA加密解密_小吴-斌的博客-CSDN博客_php rsa加密 RSA和AES的区别_LC超人在良家的博客-CSDN博客_aes rsa PHP实现非对称加密的方法 | 私钥及公钥加密解密的方法_php 公钥 私钥_LordForce的博客-CSDN博客 RSA非对称加密 特点&#xff1a; 只需交换公钥&…

2、python框架Unitter轻量级框架

类与对象定义 面向过程与面向对象 面向过程编程&#xff1a; 根据操作数据的函数或语句块来设计程序的。 面向对象编程&#xff1a; 数据和功能结合起来&#xff0c;用称为对象的东西包裹起来组织程序的方法&#xff1b; 在大多数时候你可以使用面向过程编程&#xff0c;…

Hudi系列11:Flink CDC 将MySQL的数据写入Hudi

文章目录一. 下载依赖包二. 源端数据准备三. 使用Flink cdc mysql连接器创建flinkSQL映射表四. 创建FlinkSQL Hudi连接器创建hudi表五. 将数据从CDC表插入hudi表六. 测试增删改参考:一. 下载依赖包 将 flink-sql-connector-mysql-cdc-2.2.1.jar 下载后&#xff0c;上传到$FLIN…

动手深度学习-欠拟合和过拟合

目录训练误差和泛化误差K-折交叉验证欠拟合和过拟合模型复杂性数据集大小权重衰减权重衰减简洁实现暂退法&#xff08;Dropout&#xff09;从零开始实现Dropout简洁实现参考教程&#xff1a;https://courses.d2l.ai/zh-v2/ 训练误差和泛化误差 训练误差&#xff08;training …

5000字带你了解机房搬迁有哪些步骤?干货收藏!

机房搬迁不仅仅是把机房的设备迁移到新机房那么简单&#xff0c;而是要求网络系统的迁移和集中存储系统的迁移必须安全平稳&#xff0c;不能过长时间影响生产应用。表面上就是几个IT 民工的搬运&#xff0c;但实际是一项目高度集中的体力与脑力的综合项目。现将一般机房搬迁步骤…

基于纳什谈判理论的风–光–氢多主体能源系统合作运行方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Go语言进阶和依赖管理(二)——并发和依赖管理

文章目录一、本文重点内容&#xff1a;二、详细知识点介绍&#xff1a;1、并发和并行并发&#xff1a;并行&#xff1a;结论&#xff1a;2、Go的协程协程&#xff1a;线程&#xff1a;3、协程通信方式一&#xff1a;使用通道交换数据方式二&#xff1a;使用共享内存完成数据交换…

SpringBoot 与 SpringCloud 有什么区别?

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;SpringBoot 与 SpringCloud 有什么区别&#xff1f; ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&am…

深拷贝,浅拷贝,引用拷贝有什么区别?

目录 引用拷贝 浅拷贝 深拷贝 深拷贝,浅拷贝,引用拷贝有什么区别? 引用拷贝 当我们向复制一个对象的时候,自然想到的就是赋值,直接赋值给另外一个变量,这种做法只是赋值了对象的地址,即两个变量现在指向的是同一个对象,任意一个对象操作这个属性都会影响到另外一个变量,这…

成为一名网络安全工程师,你应该学习什么?

前言 这是我的建议如何成为网络安全工程师&#xff0c;你应该按照下面顺序学习。 简要说明 第一件事你应该学习如何编程&#xff0c;我建议首先学python&#xff0c;然后是java。 &#xff08;非必须&#xff09;接下来学习一些算法和数据结构是很有帮助的&#xff0c;它将帮…

jQuery select三级联动

功能描述&#xff1a; 1 实现三级联动&#xff0c;ajax请求数据。 根据选定级别&#xff0c;查询该级别下的项目类别&#xff1b;根据选择类别&#xff0c;查询该级别类别下所属项目列表&#xff1b; 前端涉及知识点&#xff1a; &#xff08;1&#xff09;(‘#app’).change…

【云原生kubernetes】k8s控制器Deployment使用详解

前言 在上一篇我们聊了k8s中各种控制器的使用&#xff0c;本篇将以控制器中比较常用的一种控制器Deployment 进行详细的说明。 一、Deployment 简介 为了更好解决服务编排的问题&#xff0c;kubernetes在V1.2版本开始&#xff0c;引入了Deployment控制器&#xff1b; 需要说明…

47 转置卷积【动手学深度学习v2】】

47 转置卷积【动手学深度学习v2】】 深度学习学习笔记 学习视频&#xff1a;https://www.bilibili.com/video/BV17o4y1X7Jn/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source75dce036dc8244310435eaf03de4e330 转置卷积 卷积不会增大输入的高…

【Python小游戏】99%的人都不知道,“猜数字”游戏这么玩才能快速胜出,少年,要不要来猜猜看啊~(附源码)

前言 日子从不亏欠&#xff0c;每一个努力向上的人&#xff0c; 未来的走运, 都是过往尽力的积累。 人勤春来早&#xff0c;奋进正当时。新春伊始&#xff0c;我们迎来了2023年开工第一天。 栗子同学恭祝大家开工大吉&#xff0c;新年新气象&#xff0c;万事开门红&#xff…

Spring事务案例:模拟银行转账

Spring事务案例&#xff1a;模拟银行转账一. 概念二. 原程序2.1 表&#xff1a;2.2 service层接口&#xff1a;2.3 dao层接口&#xff1a;2.4 service实现类&#xff1a;2.5 测试用例&#xff1a;三.使用事务改进3.1 开启注解式事务驱动&#xff1a;3.2 开启事务&#xff1a;3.…

python使用pptx库-从一个ppt复制页面到另一个ppt里面

python使用pptx库-从一个ppt复制页面到另一个ppt里面 作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 一、原理 如题&#xff0c;我有一个模板课件.pptx&#xff1a; 其内容&#xf…