攻防世界: easyphp

攻防世界: easyphp

上述就是服务端逻辑的源码展示。

因此这里主要的任务就是控制变量abc的值,使得key1key2都为真。

这里涉及到以下知识点:

  1. 科学计数的表示:例如6e7表示6×1076 \times 10^76×107 。

  2. substr函数的功能:substr(字符串, 开始索引, 长度)。其中开始索引为负数的时候表示从末尾开始数(-1是最后一个)。

  3. PHP语言的关联数组,他的一个简单的例子如下:

    php 复制代码
    $person = [
        "name" => "张三",
        "age" => 25,
        "city" => "北京"
    ];
    
    // 可以通过这种方式,与pyhon的字典通过键值对的形式访问相似
    echo $person["name"];  // "张三"
    echo $person["age"];   // 25
  4. PHP语言的隐式类型转换

    当PHP的让一个字符串与数字进行比较(==,>, < 等符号)的时候,会将字符串转换为数字。

  5. PHP语言的松散比较与严格比较

    • 松散比较(即==符号)

      当出现松散比较的时候,如果类型不相同,首先会进行类型的转换,然后再进行比较,比如: "1" == 0 就会转换为相当于python语言的 1==0(将字符串转换为数字)。

    • 严格比较(即===符号)

      这种比较需要类型和值都是一样的时候,结果才为True。

开始分析

  1. 如下图, 这里要求a的值大于6000000,且长度不超过3,因此我们可以使用科学计数的表示方式:6e7即可通过。

  2. 如下图,这里要求b变量的经过md5得hash算法后,最后6位得值是8b184b。

    • 第一想法是使用123456,1 等值通过在线得md5加密网站看看结果,发现并不是。
    • 第二个想法,我使用了常见得用户名(来自文件)来作为输入,来判断后面6位得结果是否是8b184b,跑完了常见的,发现不是。
    • 最后尝试从0到10000000进行枚举,查看是都有符合要求的数字

    其中测试的python代码如下:

    pyhton 复制代码
    import hashlib
    
    # path = "./file/simple-users.txt"
    # with open(path, "r") as f:
    #     for line in f.readlines():
    #         tmp = hashlib.md5(line.encode()).hexdigest()[-6:]
    #         # or tmp == '0b15af'
    #         if tmp == "8b184b":
    #             print(line)
    #             break
    
    
    for i in range(10000000):
        tmp = hashlib.md5(str(i).encode()).hexdigest()[-6:]
        if tmp == "8b184b":
            print(i)
            break
            
    # 输出的值为53724

    输出的值为53724

  3. 最后就是c变量的值了。从代码来看,c是一个json字符串转换而来。它会将{}这种类型转换为一个关联数组。

  • 在第一个if中,学要确保$c["m"]不是数字,却要大于2022,这里就涉及到前面说的隐式转换了。因此其值可以为"2023N"

  • 第二个if,需要确保$c["n"]是一个长度为2的数组,且数组的第0个元素依然是数组。那可以考虑这个值: [[],"DGJJ"]

  • 这里要求数组中含有DGGJ,同时又不含有DGGJ,这怎么办呢?如下图所示:

    这就需要用到前面的知识点了,松散比较和严格比较。array_search使用的是松散比较,因此可以考虑将数组的替换为:

    [[],0]这样在array_search的时候,会将DGGJ转换为数字,"DGGJ" == 0, 转换后的结果就是 0==0,因此能通过即包含又不包含DGGJ这个字符串。

综上,最后c的值为{"m":"2023N","n":[[],0]}

拿到flag

  1. 提交参数
  1. 得到结果

相关推荐
老百姓懂点AI1 小时前
[网络安全] 自动化渗透测试:智能体来了(西南总部)AI agent指挥官的攻击链构建与AI调度官的靶场编排
人工智能·web安全·自动化
数字护盾(和中)2 小时前
数字 “黑天鹅” 频发:从亚冬会网攻到朝日啤酒断供的安全警示
网络·安全·web安全
浩浩测试一下2 小时前
内网---> ForceChangePassword 权限滥用
java·服务器·网络·安全·web安全·网络安全·系统安全
爱思考的发菜_汽车网络信息安全3 小时前
汽车网络安全:RSA算法详细解析
安全·web安全·汽车
汉堡包00114 小时前
【网安基础】--内网代理转发基本流程(正向与反向代理)
安全·web安全·php
lingggggaaaa18 小时前
安全工具篇&Go魔改二开&Fscan扫描&FRP代理&特征消除&新增扩展&打乱HASH
学习·安全·web安全·网络安全·golang·哈希算法
贾修行21 小时前
企业级网络安全架构实战:从防火墙部署到远程办公全解析
web安全·架构·智能路由器
模型时代1 天前
Infosecurity Europe欧洲信息安全展将推出网络安全初创企业专区
安全·web安全·区块链
niaiheni1 天前
Log4j 漏洞深度分析:CVE-2021-44228 原理与本质
web安全·网络安全·log4j
Hubianji_091 天前
[IOS]2026年网络安全、通信技术与计算机科学国际会议(ACCTCS 2026)
计算机网络·安全·web安全·ios·国际会议·国际期刊