吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3069|回复: 39
收起左侧

[Web逆向] 仅使用浏览器分析某教育平台从登陆到任务完成的数据交换

  [复制链接]
Pwaerm 发表于 2023-2-14 13:00
本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!

以CQ市为例

在登陆页,任意输入一个帐号密码,然后在控制台看到登陆接口为
forum.png

[Asm] 纯文本查看 复制代码
usercenter/api/v3/wx/login?checkShowQrCode=true&tmp=false

数据并未加密,那么无感登陆就简单了
[Asm] 纯文本查看 复制代码
$.ajax({
    url: "https://appapi.xueanquan.com/usercenter/api/v3/wx/login?checkShowQrCode=true&tmp=false",
    type: "POST",
    contentType: "application/json",
    dataType: "json",
    xhrFields: {
      withCredentials: true
    },
    timeout: 10 * 1000,
    data: JSON.stringify({ username: _o.user, password: _o.pwd, "loginOrigin": 1 }),
    success: function (_data) {
      console.log(_data);
}}


第二步,进入学习任务页
同上,得到,任务完成情况接口为:
[Asm] 纯文本查看 复制代码
safeapph5/api/v1/homework/homeworklist

无感开启任务页
[Asm] 纯文本查看 复制代码
//学习任务
var openTabs = {};
function studyList(_isTest) {
  console.log("获取学习任务列表");
  $.ajax({
    url: "https://yyapi.xueanquan.com/chongqing/safeapph5/api/v1/homework/homeworklist",
    type: "GET",
    contentType: "application/json",
    dataType: "json",
    xhrFields: {
      withCredentials: true
    },
    timeout: 10 * 1000,
    success: function (_data) {
      var _t = _data.length;
      var _num = 0;
      if (_t > 0) {
        while (_t--) {
          if (_data[_t].workStatus == "UnFinish") {
            console.log(_data[_t].title, ":", _data[_t].url);
            var _gid = getValueByUrl(_data[_t].url, "gid");
            var _li = getValueByUrl(_data[_t].url, "li");
            //常规授课课程
            if (_gid && _li) {
              //看视频(方案失败)
              //killVideo(_data[_t].title, _gid, _li);
              //把手机版地址转换为电脑版地址
              var _videoUrl = _data[_t].url.replace("platform/student/skilltrain.html", "jt/student/SeeVideo.html");
              if (!openTabs[_videoUrl]) {
                openTabs[_videoUrl] = true;
                window.sendMessage({ type: "createTab", data: { url: _videoUrl, selected: false } });
              } else {
                //完成答题                            
                console.log("答题");
                killStudy(_data[_t].title, _li);
              }
            } else {
              //专项课程(参数sid在列表数据中没有)
              //window.open(_data[_t].url);
              sutdentSign(818);
            }
            _num++;
          }
        }
      } else {
        _num = -1;
        console.log("本期还没有开启需要完成的任务。");
      }
      if (_num == 0) {
        if (_isTest) {
          console.log("任务完成有效,验证通过。");
        } else {
          console.log("当前没有需要完成的任务。");
        }

        setTimeout(lockUser, 600, getUrlParam("uid"));
      } else {
        _num > 0 && console.log("尝试完成了" + _num + "个任务。");
        setTimeout(studyList, 1000, true);
        //window.sendMessage({ type: "reloadTime", data: { time: _num + 0.5 } });
      }
    }
  })
}


视频只要打开就视为完成,关键的是答题,通过分析得到。答案其实就在接口返回的sjon数据中,在提交时作答的情况并未返回到后面判断 。
而给后台的数据是:
[Asm] 纯文本查看 复制代码
_answer = {
        "workId": _data.workId,
        "fid": _data.fid,
        "title": _title,
        "require": "",
        "purpose": "",
        "contents": "",
        "testanswer": "0|0|0",
        "testinfo": "已掌握技能",
        "testMark": 100,
        "testResult": 1,
        "siteName": "",
        "siteAddrees": "",
        "watchTime": "2022-04-08T02:45:24.323Z",
        "courseID": _cid
      }

以上数据 中的 "0|0|0",  表示做的全对。那么直接无感提交:

[Asm] 纯文本查看 复制代码
function killStudy(_title, _cid) {
  //获得题目的ID
  $.ajax({
    url: "https://yyapi.xueanquan.com/chongqing/api/v1/StudentHomeWork/GetSkillTestPaper?courseId=" + _cid,
    type: "GET",
    contentType: "application/json",
    dataType: "json",
    xhrFields: {
      withCredentials: true
    },
    timeout: 10 * 1000,
    asycn: false,
    success: function (_data) {
      console.log(_data);
      _data = _data.result;
      _answer = {
        "workId": _data.workId,
        "fid": _data.fid,
        "title": _title,
        "require": "",
        "purpose": "",
        "contents": "",
        "testanswer": "0|0|0",
        "testinfo": "已掌握技能",
        "testMark": 100,
        "testResult": 1,
        "siteName": "",
        "siteAddrees": "",
        "watchTime": "2022-04-08T02:45:24.323Z",
        "courseID": _cid
      }
      sendAnswer(_answer);
    }
  })
}
function sendAnswer(_data) {
  //提交答题数据,完成答题
  $.ajax({
    url: " [url=https://yyapi.xueanquan.com/chongqing/api/v1/StudentHomeWork/HomeWorkSign]https://yyapi.xueanquan.com/chon ... meWork/HomeWorkSign[/url]",
    type: "POST",
    contentType: "application/json",
    dataType: "json",
    data: JSON.stringify(_data),
    xhrFields: {
      withCredentials: true
    },
    timeout: 10 * 1000,
    success: function (_data) {
      console.log(_data);

    }
  })
}


一个任务就算完成了。

专项任务也直接上
[Asm] 纯文本查看 复制代码
//专项活动视频签到(很重要) 
function sutdentSign(_sid, _exit) {
  var _sid = _sid || $("body").attr("data-specialId") || 808;
  $.ajax({
    url: "https://huodongapi.xueanquan.com/p/chongqing/Topic/topic/platformapi/api/v1/records/sign",
    type: "POST",
    contentType: "application/json",
    dataType: "json",
    xhrFields: {
      withCredentials: true
    },
    data: JSON.stringify({ "specialId": _sid, "step": 1 }),
    timeout: 10 * 1000,
    success: function (_data) {
      console.log(_data);
      if (_exit) {
        //lockUser(getUrlParam("uid"));
      }
    }
  })
}


到此,登陆    看视频   做练习   专项作业就串起来了。  因为数据没有加密,所以完全没有压力。


免费评分

参与人数 6吾爱币 +11 热心值 +5 收起 理由
笙若 + 1 + 1 谢谢@Thanks!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
zhangxiaoxiao + 1 用心讨论,共获提升!
瓜霸 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
隔壁老赵 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Wayne2021 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

 楼主| Pwaerm 发表于 2023-2-15 10:27
shouwangxinyang 发表于 2023-2-15 10:22
我还一直好奇 是做了加密函数的话是是不是就不能这么做 或者直接删除掉这个能不能过

加密了也能玩。
一种方案是逆向加密函数
另一种方案就简单得多了直接通过devtool控制台获取一个人的数据记录下来,用于其它的人(因为所人有完成的任务都一样,数据相同)
如果加密后每个人的数据不一样,可以通过控制台替换文件在js中直接引用加密函数。
 楼主| Pwaerm 发表于 2023-2-15 08:19
fyabcabc 发表于 2023-2-15 08:14
他是因为违规三次被ban了帖子自动屏蔽

我这个帖子,只是做数据交互方面的分析。



这里有个王炸: https://anquan.huggy.moe/
据说是个高中学生做的,一看便知。
o.o 发表于 2023-2-14 13:08
 楼主| Pwaerm 发表于 2023-2-14 13:18
o.o 发表于 2023-2-14 13:08
针对这个平台,我举双手,你做得对

  搜索过历史贴。好像发成品会被删贴。
所以只能分个分析过程 。
fyabcabc 发表于 2023-2-14 13:35
具体怎么用呢
头像被屏蔽
tyz1234 发表于 2023-2-14 14:14
提示: 作者被禁止或删除 内容自动屏蔽
cghray 发表于 2023-2-14 14:15
我举双手支持你!
 楼主| Pwaerm 发表于 2023-2-14 14:16
tyz1234 发表于 2023-2-14 14:14
小白期待大佬的成品,谢谢

发成品会被删贴。
yanguichao 发表于 2023-2-14 14:29
我们这儿暂时还未接触到此平台。感谢楼主提前剧透。
Wayne2021 发表于 2023-2-14 14:37
哈哈 虽然看不懂  但是很赞
mengyang 发表于 2023-2-14 14:41
不会用啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-16 12:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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