WeChall - Trivia
Challenge
WeChall 自带的随机问答挑战。每次访问页面会随机显示一道选择题,需要在 60 秒内提交正确答案。答对若干题后自动完成。
题目范围覆盖计算机历史、技术术语、影视、文学、地理等类别,随机抽取。
Solution
每道题都有一个 60 秒的计时器,表面看需要广泛的知识储备才能通过。但挑战的题库文件意外地暴露在 Web 上。
题库泄露
挑战页面所在的目录下有一个隐藏子目录:
1 | /challenge/trivia/74k37h053/ |
目录名 74k37h053 是 leetspeak,指向 3
个纯文本文件,包含了完整的问答数据库:
| 文件 | 题数 | 内容 |
|---|---|---|
gizmore.txt |
7 | Gizmore 自创的冷门题 |
z.txt |
116 | 综合题库(影视/文学/历史/技术) |
InternalAffairs-Computers.txt |
59 | 计算机/技术专项(缩写/历史/网络) |
每题的格式统一:
1 | /Category/Answer1/AlternativeAnswer//Question text? |
例如:
1 | /Acronyms-Hardware/Central Processing Unit//What does CPU stand for? |
自动化答题
拿到题库后,解法就很简单了:
- 读取页面,提取问题文本
- 在题库中逐条匹配,找到对应的答案
- 在 60 秒内提交
由于每次加载页面都会刷新 CSRF token,提取题目和提交需要在同一次请求中完成。
1 | import subprocess, re |
答对约 10-15 道不同的题后,页面显示 "already solved",挑战完成。