抓包改包突破锦城教育——一秒看完课程

最近又到了期末了 又布置要听烦人的锦城教育的视频 有几个视频 要一直挂着才可以
我是标题党 其实没题目说的那么夸张 还是要一些步骤的

这个看视频比较烦人噢 我又比较懒 所以想要突破一下 那个看视频的限制 达到一秒看视频的效果
传说中是可以开多台机子同时听课程的 不过我还是太懒了 不想开着浪费电 我也没测试
那我们随便选一门课程进去听 测试一下
锦城

Ox01
可以看一些和计时相关的js 研究一下他的计时的过程
course1.jincin.com/js/recordtime.js 这里是个计时的js
观察一些与计时相关的函数参数 发现了一些注释


这些注释可以帮助我们理解计时的过程

Ox02
我们也来边看边抓包观察一下
burp
发现他的计时的规律是这样子的
先一秒一秒的计时 用cookies 记录着 发送给 jincin.com/Servlet/recordStudy.svl 如下图我截取了几个数据包的一部分
计时规律
然后到了60秒的时候 就转换成分钟 给recordStudy.svl发送POST包
post
这里POST包里的一个参数是nCountTime=1 这样子的 把他修改成你的课程的时间 就可以完成一秒听课的目的
time
当然也可以修改成最大的值 是不能大于500的 可以默认改成499 这样子就一次听了499分钟,如果遇到了课程的时间太长 还没有完成 也可以再发一次包
这样子来完成这个课程
每次成功计时可以发现一个response的包
返回成功

Ox03
来看一下这个关键的POST一些参数吧

POST /Servlet/recordStudy.svl HTTP/1.1
Accept: */*
Accept-Language: zh-CN
Referer: http://flash.jincin.com/P2PPlayer/P2PPlayer.swf
x-flash-version: 11,9,900,170
Content-Type: application/x-www-form-urlencoded
Content-Length: 266
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Proxy-Connection: Keep-Alive
Host: jincin.com
Pragma: no-cache
Cookie: pgv_pvi=9422153728; pgv_si=s5030289408; 4001889036slid=slid_919_; 4001889036mid=923_95; 4001889036mh=1387632196946; 4001889036slid_919_34=1387632196947; luserid=37400004xxx; token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; lasttime=1387632200874;

lSchoolId=73&strSys=prese&lCourseId=867&lPlanId=3600000026&strStartTime=1387632619180&lUserId=37400004xxx&strToken=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&strType=1&nCountTime=1

一开始还把POST的内容看成了cookies了 好尴尬
然后我们有了这些思路就可以来修改 直接在burp suite里修改post上去的参数nCountTime 就可以了

Ox04
还有一些其他的实验可以来做 比如寻找所有的课程 用burp suite的intruder来爆破 寻找所有的课程id 修改参数lCourseId的值 用字典来代替 发现基本都是1000以内的数值 自己也可以整理出所有的课程id
顺便介绍一下用burp suite爆破的过程
把那个post包发到intruder去
positions
然后选择一个添加一个变量 在你要用字典的那个用加上变量
load字典
最后在payload里选择load去载入你自己生成的字典 或者是选择自己想要用的方式来添加
然后在intruder里选择start attack就可以了
start

Ox05
还可以来尝试用最少的参数来构造POST包 其实在js里也是有提示的 他只检查了一些特定的项 多找了几个号来测试了一下
构造出这样子一个最小的POST包来发送

POST /Servlet/recordStudy.svl HTTP/1.1
Host: jincin.com
Content-type: application/x-www-form-urlencoded

strSys=prese&lCourseId=4&lPlanId=3600000026&lUserId=43000004xxx&nCountTime=499&lSchoolId=73

这些参数是必须要有的
依次来说明一下这些参数
strSys 这个是观看的状态吗?这个没说明 没看懂
lCourseId 是课程的id 在观看时的url里就有出现的 一进入很多门课程里选择的表单里也有的 在网页里 可以想办法抓取 想自动化实现的话 就可以把抓取的内容作出字典来 重复发POST包 达到听全规定的课的目的
lPlanId 是教学的计划 这个也是在网页里可以抓取的
lUserId 是用户的标识码 貌似在网页没找到 储存在了cookies里了
nCountTime 是观看的计时时间 多少分钟 默认是小于500的 可以设置499来发包
lSchoolId 是学校的id 成信的是73 其他的就没有去尝试了 在url里就有了

之后就是想办法去做一个软件或者是火狐插件来实现一键听课 让这个过程自动化实现

8 条评论

  1. Tomato 十二月 27, 2013 10:07 下午  回复

    屌。YD

    • AppLeU0 一月 5, 2014 12:22 上午  回复

      好紧张的说 一下子我就听了800+门。。。

  2. 大神求带 三月 2, 2014 6:14 下午  回复

    大神求带

    • AppLeU0 三月 3, 2014 2:30 下午  回复

      EM大神 不要调戏我

  3. Edward_L 十一月 25, 2014 7:02 下午  回复

    为什么改了包中的nCountTime之后发包,等再一次接收到的时候又变回1了呢?

    • AppLeU0 十一月 25, 2014 7:56 下午  回复

      有点久了 记不到了 自己用burp多包测测吧

发表评论

*