[HGAME 2023 week1]Guess Who I Am

做一个新手向的wp吧

题目是:刚加入Vidar的兔兔还认不清协会成员诶,学长要求的答对100次问题可太难了,你能帮兔兔写个脚本答题吗?

有三个接口,用bp抓包观察

当问题回答正确,会先用POST方法发送id=XXX的数据包(/api/verifyAnswer)

然后再GET /api/getScore和/api/getQuestion得到分数和新的问题

查看源代码,找到github上的成员信息,cv到一个代码的一个列表里,稍加修改写成列表里面每个元素是字典类型的形式(这里我的方法是删掉爆红的avatar值)

处理好,开始写脚本

import requests, json
  • requests:用来发送网络请求(获取题目、提交答案等)
  • json:用来处理服务器返回的JSON格式数据
session = requests.session()

cookies在不断变化,用requests.session()处理

def search(message):
    for i in ans:
        if i['intro'] == message:
            return i['id']
  • 这个函数接收题目内容(message)
  • ans列表中查找intro(自我介绍)与题目匹配的条目
  • 返回匹配条目的id(人员ID)
for i in range(100):

100题就循环100次

req1 = session.get(url + '/api/getQuestion')
print(req1.text)
message = req1.json()['message']
  • 发送GET请求获取题目
  • print(req1.text)打印服务器返回的原始数据(用于调试)
  • 从返回的JSON数据中提取题目内容(message)
answer = search(message)
data = {"id": answer}
req2 = session.post(url + '/api/verifyAnswer',data=data)
print(req2.text)
  • 调用search函数,根据题目内容查找对应的答案
  • 准备要提交的数据({"id": 答案})
  • 发送POST请求提交答案
  • 打印服务器返回的结果
req3 = session.get(url + '/api/getScore')
score = req3.json()['message']
print(score)
posted @ 2025-04-20 16:43  Susen  阅读(49)  评论(0)    收藏  举报