V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crazytec
V2EX  ›  程序员

哔哩哔哩 1024 安全攻防挑战赛第七题可能没有最优解

  •  
  •   crazytec · 2021-10-25 16:44:07 +08:00 · 3919 次点击
    这是一个创建于 906 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看见哔哩哔哩搞了个 1024 程序员节,里面有一个叫做“安全攻防挑战赛”的东西。我以前没有做过 CTF ,正好想试试,还看到有可能获奖,于是就做了一下试试。前六题都做完之后发现第七题有 20 分,于是决定先用小号试一下再大号提交。在提交我筛选出来的 IP 时,系统提示“恭喜您找到了大部分 IP 地址,请再接再厉”,获得了 10 分。通过归纳总结,我发现提交 FLAG 的 API 有如下策略:

    1. 当填入的 IP 少于 14 个时,提示“您提交的答案不正确”。
    2. 当填入的 IP 中有任何一个不正确时,提示“您提交的答案不正确”。
    3. 当填入的 IP 大于 14 个且都正确时,提示“恭喜您找到了大部分 IP 地址,请再接再厉”。
    4. 输入的 IP 无视排序

    于是,我写了一个简单的小程序来检查每个 IP 是否正确。原理上就是把确定正确的 13 个 IP 附上需要检验的 IP 提交,然后如果提示“不正确”那么 IP 就不在 FLAG 里,如果提示其他的内容,那么 IP 就是正确的。

    通过一晚上的运行,我将整个数据集的 IP(共 19823 个)都尝试了一遍,正确的 IP 如下:

    (以下是 FLAG 中存在的 IP 的 sha1sum )

    b8f9f8d26901786a7fe0b2ab35b054c4d34ce42f  -
    d2e34145b89d0807f40b84e850294f86d70f5c2c  -
    deb00796f9c4e1ad9dfe6f174cdb45cbdee6e5cd  -
    9d381d580b3998aba2575bf87a214ebb37d08ecf  -
    987eb61e8707cca3a05085f1a3a687bc0fcb9211  -
    3f4390d670eb3b5de2e109a637b991c032f92f02  -
    6f35451b11feb306f93562f45914276549103766  -
    89bc2e8435dbe36c38151f7b218f07b71c89bc2a  -
    5bbd5a5b6259fb83e95c05625cc39ca6e9744ca7  -
    8879efe720e600d80b7686de1e3da5647ba18abe  -
    62d42b7707be4b8b59c5a2d054053803355d6256  -
    f490fdfb5b0c9d0b1319b262f68bea0e2b4a21ac  -
    9b51fe776f0488c63d4dc4bcb29309164201b2db  -
    1010281072c0c789bb09aeb0a8cbd63384bf605c  -
    49a7ca656edce26049925489c5c10d747942d3b9  -
    8b12dae8df67a9a534504c41fa55e3898f83fa2a  -
    c9e9121007e5d292ac8e44b7a41977922252eae9  -
    7993a6d4ed983f613a06d5d8f9648e2259d83b30  -
    c578d7dddaa13cd36172dfe8ec93908994b8acc2  -
    

    将这些 IP 提交后,我仍得到了“恭喜您找到了大部分 IP 地址,请再接再厉”。我又便写了一个类似的程序(用 shell 写的)确保我的程序没有出现 bug ,结果仍然相同。有人成功提交了全部的 IP 吗?有人知道我上面没有提到的正确的 IP 吗?这道题是不是不能获得满分?

    14 条回复    2021-10-25 20:35:02 +08:00
    wongskay
        1
    wongskay  
       2021-10-25 17:04:27 +08:00
    完整题目可以在哪里获得?
    kiracyan
        2
    kiracyan  
       2021-10-25 17:21:36 +08:00
    我第一题看了半小时都做不出来
    mxT52CRuqR6o5
        3
    mxT52CRuqR6o5  
       2021-10-25 17:23:47 +08:00
    肯定有人成功提交了全部的 IP ,因为排行榜上有几个满分的
    crazytec
        4
    crazytec  
    OP
       2021-10-25 17:36:07 +08:00
    crazytec
        5
    crazytec  
    OP
       2021-10-25 17:45:45 +08:00
    @mxT52CRuqR6o5 我就是不确定排行榜上的几个满分的是怎么得到 IP 的,要是我的逻辑没问题那满分所用的 IP 一定不在给的日志里
    xing7673
        6
    xing7673  
       2021-10-25 17:57:12 +08:00 via iPhone
    有没有可能是某些特定 ip 为一类簇,如果没完整提交这类簇的全部 ip 就认为是错误的提交。
    防爆破正确答案应该也是直觉需要设想的场景吧
    mxT52CRuqR6o5
        7
    mxT52CRuqR6o5  
       2021-10-25 18:01:57 +08:00
    @crazytec 那有可能你总结的那 4 个策略其实不是对的,可能实际的策略很复杂(比如不同的正确 ip 分值不同,错误 ip 减分,根据最后得分展示文案)
    yuyiyan
        8
    yuyiyan  
       2021-10-25 19:00:21 +08:00
    可能是得提交解题过程去邮箱 然后给才你修改分数的机制
    crazytec
        9
    crazytec  
    OP
       2021-10-25 19:07:46 +08:00
    @yuyiyan 我看描述"解题过程**可**发送至....我们会挑选**3 位**,给予额外惊喜"不像是修改分数的意思吧
    aptx4689
        10
    aptx4689  
       2021-10-25 19:21:23 +08:00
    剩下 10 分是组合 IP 得分,即需要同时组合某几个 IP 一起,这部分分数才能拿到
    crazytec
        11
    crazytec  
    OP
       2021-10-25 19:34:18 +08:00
    @aptx4689 请问如果组合中几个 IP 中有一个没有找到,整个答案就显示无效是吗?
    crazytec
        12
    crazytec  
    OP
       2021-10-25 19:42:23 +08:00
    提供的下载链接也很有误导性,文件名后面接了个"v=2",然后如果改成"v=1"的话会下载完全不同的一个压缩文件。本来以为这个可能是突破口,但是研究之后发现"v=2"的那个文件就是删除了一个不重要的字段然后修改了一下一些字段的名字。
    YUyu101
        13
    YUyu101  
       2021-10-25 20:32:00 +08:00
    一个猜想,有没有可能把 42 亿个 ip 遍历一遍(逃
    yuyiyan
        14
    yuyiyan  
       2021-10-25 20:35:02 +08:00
    原来你就是那异常 ip [doge]
    @YUyu101
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5273 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:35 · PVG 16:35 · LAX 01:35 · JFK 04:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.