优慕课网络教学平台的破解(一)

由 admin 发布

本教程只提供漏洞以及破解原理的讲解,并不提供完整代码。这部分阐述网络教学平台的下载漏洞。

概述

由于优慕课本身技术不成熟,存在许多Bug,影响学生的正常使用。由于老师可能不开放下载权限,导致学生只能在线观看,在使用在线观看课件、视频等过程中,经常出现加载不完整、图片模糊等问题。因而,提供本教程目的以解决这一问题。最后希望大家也能尊重老师的知识产权,在使用完成后即时删除,切不可外传,请观看者在遵守本约定的条件下再继续阅读。

方案一

观察如下下载链接:

http://xxx.xxx.xxx.xxx/meol/common/script/download.jsp?fileid=12345&resid=12345

每个存储在教学平台上的资源都有一个对应的fileid与resid,fileid顾名思义即文件号,resid则为验证需要的id,此方案需要同时获得fileid与resid的情况下才可以下载文件。在某些未开放下载权限的网址中,网址带preview,如下:

http://xxx.xxx.xxx.xxx/meol/common/script/preview/download_preview.jsp?fileid=12345&resid=12345&lid=12345

只需将preview相关的参数删除即可,如下:

http://xxx.xxx.xxx.xxx/meol/common/script/download.jsp?fileid=12345&resid=12345&lid=12345

对于lid参数,不必理会,可以保留也可删除,lid所代表的即lesson id,也就是课程号。

但某些网址里并不包含fileid与resid,我们需要分别来获取。首先按下罪恶的F12,查找fileid即可找到fileid,fileid可以通过爬虫快速获得,这里不提供代码。resid也可以如此尝试,但通常找不到,我们可以通过枚举法来得到,同时在F12中也可以获取该界面的folderid、columnid与lid。

经过大量的测试,resid通常比folderid稍大(10以内),或者远大于folderid(1000以上),缩小了一定的范围。枚举的方法最重要的一步是得判断哪个是下载链接,哪个不是下载链接,这样才能让枚举进行下去。这里我们就得利用这个平台的另一个Bug。经研究,下载链接网页编码方式为“GBK”,而非下载链接的编码方式为“gbk”,对,你没有看错,其实是一样的只是大小写的区别,但是可以利用大小写来区别开哪条是下载链接,哪条不是。我们使用python来讲解一下:

r=requests.get(url)  #发送GET请求
if r.encoding == 'GBK':
    resid='xxxx'

因而,resid和fileid至此全部获得,带入上述的网址中可以得到下载链接。

方案二

针对方案一做了一定的修改,方案一中获取的resid方法的比较耗时,因而提供了方案二。

上述讲到了folderid、lid、columnid的获取方法。我们可以利用手机端来获取resid,利用上述参数发送post请求(基于手机端的API,可以自己抓包看看),可以获得json格式的数据包,其中就包含resid。(fileid也可以通过此方法获取)。需要注意的是手机端的lid名称叫做‘courseId’,部分id名称会略有区别。

方案三

此方案是针对手机端获取的Bug。

利用对手机端的优慕课抓包,可以得到手机端的下载链接格式为:

http://xxx.xxx.xxx.xxx/mobile/common/ckeditor/openfile.jsp?id=12345

因而,我们只需要获取fileid即可,获取方法参考方案一或方案二。再将其与下载API连接起来即可得到下载链接。

url='http://xxx.xxx.xxx.xxx/mobile/common/ckeditor/openfile.jsp?id='+fileid

方案四

此方法与方案三的使用方法相同,但是API不同,此Bug是在网页代码里找到的,并未抓包,也仅需fileid,API为:

http://xxx.xxx.xxx.xxx/meol/common/ckeditor/openfile.jsp?id=12345

只能说开发者太不认真了。

总结

推荐使用方案三或方案四,最快捷,本站不提供完整代码,需要实现的自行通过上述所讲的代码解决。不要在非法用途中使用!!!




暂无评论

发表评论