攻防世界: 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. 得到结果

相关推荐
lifejump6 小时前
Dede(织梦)CMS渗透测试(all)
前端·网络·安全·web安全
HackTwoHub7 小时前
AI提示词注入绕过工具:一键绕过Codex/Claude安全限制,CTF夺旗与渗透测试必备神器
网络·人工智能·安全·web安全·系统安全·网络攻击模型·安全架构
sensen_kiss7 小时前
CAN302 Technologies for E-Commerce 电子商务技术 Pt.8 网络安全(Secure the Web)
网络·学习·安全·web安全
其实防守也摸鱼8 小时前
Sqlmap:选取sqli-labs中less-8进行sqlmap注入测试
前端·css·网络·安全·web安全·less·sqli-labs
见青..12 小时前
JAVA安全靶场环境搭建
java·web安全·靶场·java安全
上海云盾-小余12 小时前
跨境业务网络高危隐患:恶意流量拦截与高防架构搭建实战
网络·安全·web安全
w1wi12 小时前
cve_2026_31431(Copy Fail)物联网设备万能提权漏洞
web安全·安全性测试
上海云盾第一敬业销售13 小时前
深度解析:CDN网络安全架构与实践
安全·web安全·架构
如君愿13 小时前
考研复习 Day 36 | 习题--计算机网络 第七章 网络安全(下)、数据结构 排序算法(下)
计算机网络·考研·web安全
Chockmans1 天前
春秋云境CVE-2022-32991(手注和sqlmap)保姆级教学
数据库·安全·web安全·网络安全·oracle·春秋云境·cve-2022-32991