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

相关推荐
treesforest10 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
上海云盾第一敬业销售11 天前
深入解析WAF的工作原理与机制
web安全·ddos
憧憬成为web高手11 天前
l33t-hoster
学习·web安全·网络安全
HackTwoHub11 天前
Sqli-Scanner SQL注入SKILL自动化挖掘SQL注入,零依赖自动化SQL注入挖掘,赏金猎人
数据库·人工智能·sql·web安全·网络安全·自动化·系统安全
zhengfei61111 天前
小白级手册——全面剖析红队信息收集思考
网络·安全·web安全
爱网络爱Linux11 天前
网络安全与渗透测试实用工具大全
web安全·网络安全·信息安全·cisp-pte·cisp·cissp
持敬chijing11 天前
Web渗透之SQL注入-常用sql语句
sql·安全·web安全·网络安全
顾凌陵11 天前
Web安全二阶段综合测试:知识点速查与实战技巧
安全·web安全
Chengbei1111 天前
AISec真正拟人化全自动渗透工具!支持浏览器交互全自动化挖掘,SQL注入、XSS、越权等。
sql·安全·web安全·网络安全·自动化·系统安全·xss
AI784012 天前
安全左移:网络安全从“亡羊补牢”走向“未雨绸缪”
网络·安全·web安全