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

2021-10-25 16:44:07 +08:00
 crazytec

看见哔哩哔哩搞了个 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 吗?这道题是不是不能获得满分?

4023 次点击
所在节点    程序员
14 条回复
wongskay
2021-10-25 17:04:27 +08:00
完整题目可以在哪里获得?
kiracyan
2021-10-25 17:21:36 +08:00
我第一题看了半小时都做不出来
mxT52CRuqR6o5
2021-10-25 17:23:47 +08:00
肯定有人成功提交了全部的 IP ,因为排行榜上有几个满分的
crazytec
2021-10-25 17:36:07 +08:00
crazytec
2021-10-25 17:45:45 +08:00
@mxT52CRuqR6o5 我就是不确定排行榜上的几个满分的是怎么得到 IP 的,要是我的逻辑没问题那满分所用的 IP 一定不在给的日志里
xing7673
2021-10-25 17:57:12 +08:00
有没有可能是某些特定 ip 为一类簇,如果没完整提交这类簇的全部 ip 就认为是错误的提交。
防爆破正确答案应该也是直觉需要设想的场景吧
mxT52CRuqR6o5
2021-10-25 18:01:57 +08:00
@crazytec 那有可能你总结的那 4 个策略其实不是对的,可能实际的策略很复杂(比如不同的正确 ip 分值不同,错误 ip 减分,根据最后得分展示文案)
yuyiyan
2021-10-25 19:00:21 +08:00
可能是得提交解题过程去邮箱 然后给才你修改分数的机制
crazytec
2021-10-25 19:07:46 +08:00
@yuyiyan 我看描述"解题过程**可**发送至....我们会挑选**3 位**,给予额外惊喜"不像是修改分数的意思吧
aptx4689
2021-10-25 19:21:23 +08:00
剩下 10 分是组合 IP 得分,即需要同时组合某几个 IP 一起,这部分分数才能拿到
crazytec
2021-10-25 19:34:18 +08:00
@aptx4689 请问如果组合中几个 IP 中有一个没有找到,整个答案就显示无效是吗?
crazytec
2021-10-25 19:42:23 +08:00
提供的下载链接也很有误导性,文件名后面接了个"v=2",然后如果改成"v=1"的话会下载完全不同的一个压缩文件。本来以为这个可能是突破口,但是研究之后发现"v=2"的那个文件就是删除了一个不重要的字段然后修改了一下一些字段的名字。
YUyu101
2021-10-25 20:32:00 +08:00
一个猜想,有没有可能把 42 亿个 ip 遍历一遍(逃
yuyiyan
2021-10-25 20:35:02 +08:00
原来你就是那异常 ip [doge]
@YUyu101

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/810403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX