教务管理系统乱码服务器不可,青果教务管理系统Post登录(二)

承接上一篇贴子的后续,这次成功完成了预想功能.

其实本来对学校的教务系统已经没什么兴趣了,但是前两天从吾爱上面看到一篇帖子,在post登录后获取自己的成绩直接对接短信平台,实现每当有新成绩公布的时候可以直接短信通知自己.这一下就又激起了我的兴趣,于是又掉回头来搞它.

不得不说我们这青果的教务管理系统虽然在加密程度上并不高只有前端加密,但是在请求数据的时候却麻烦的很.

b5d23a0a4f05

在上一篇文章中我刚刚把前端加密摸清楚以后尝试着取post登录,但是返回的却全都是乱码.这时候看看协议头瞬间明了,不知道是青果都这样还是只有我们学校这样,网站在传递数据时采用了GZIP压缩.

b5d23a0a4f05

而且我还发现前文提到的SessionID在协议头中也有提交.其实在整个网站中不管是post包还是get包中提交信息的作用我发现并不大,主要的识别用户凭据反而是请求协议头里面的内容.提交的信息里面的参数其实大多都是一看就能猜到具体意义的.

回归正题,经过网页解压后的数据中可以很清楚的看到错误提示---验证码错误.

既然找到了真正的错误原因,那么下一步的方向就很明确了.通过反复比较网页源码中的加密方式与自己的代码,基本确定在加密方面并没有问题.然后进一步过抓包验证(抓提交登录的包看里面的验证码加密后的数据与自己的代码加密后的数据进行对比)确定加密一定是没有问题的.

前文曾提到过,当时猜测cookies中的SessionID作为系统识别用户的识别凭证,经过多次试验(用其他浏览器抓包发现SessionID不同,且IP不被作为识别标记因为同一设备不同浏览器的SessionID的值也是不同的)发现,这一猜想是正确的.

这样一来问题就变得非常简单了,验证码错误的原因很明显就是因为用户识别身份的问题,我在get验证码图片时仅仅是get获取图片并没有附上SessionID,所以系统也就将获取的验证码和我登录时的SessionID区分开,判断为不同人在进行操作.用别人的验证码进行验证怎么可能成功呢?当我包get数据时的请求头附上我的SessionID时问题解决了,进一步证实了SessionID是识别用户的识别凭证这一猜想.

当把一切梳理修改完成之后,再次对程序进行调试,OK,登录成功但是随之而来的第二个问题也出现了,尽管已经登录成功,但是在获取成绩时却提示没有权限.仔细检查检查,在get时也已经附上了登陆成功的SessionID.但是就是无法获取.

返回浏览器从新抓包.我们的教务管理系统在检索成绩时一共发了两个包一个是post包一个是get获取成绩的包.在第一次试验时因为发现成绩是直接get过来的而post包的返回数据是一个标题也就没怎么在意,回国头来发现这个post包里面提交的数据几乎和get包提交的一样,而且get包中与这个post包中有同样的提交参数并且那些提交参数在试验中发现修改以后对返回的成绩并没有影响.

看看这个所发送的文件名,_rpt,巧了get包里面也有一个参数也叫rpt.

b5d23a0a4f05

最后经过多次试验发现在post包中的sj参数便是get包中的rpt参数,两者必须一致,并且必须先post然后再get才能获取成绩.

总结:在抓包时一定要不放过每一个小细节,不止是cookies消息头是非常重要的一环,必要时要耐下心来阅读网页的源码也许你能在里面找到意想不到的收获,比如我们学校的教务系统是采用GBK编码而不是UTF-8,这直接导致了在抓包发包时很多的内容被encoding.

最后关于短信平台的话可以自己在网上找一找,想要实现一开头所说的每当有新成绩发布就自动短信通知自己的话你还必须拥有一台属于自己的24h开机的服务器才行,短信大概是20元200条的样子.单人用的话成本蛮高的,不过如果想做成自己服务器的附属功能也还蛮不粗,看自己的实际情况吧.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值