正方教务处抓包分析

大概全中国的教务处网站都是一样的,选课时期总是出去薛定谔的猫的状态,因此使用爬虫来选课对于计算机的学生来说就很正常了,在进行爬虫爬取之前,我们首先需要对它进行抓包分析。

试探

首先登录教务处网址,我们学校教务处的网址是10.5.2.80,在浏览器中输入网址后你会发现进行了重定向,重定向后的网址是10.5.2.80/(uzcntciw0q5jisjv5ydagx45)/default2.aspx.你会发现中间用括号括起来了一个长度为24的字符串,我们再在浏览器中输入一次10.5.2.80网址,再次进行重定向,发现中间的字符串再次进行了改变。这就很有意思,中间的字符串为甚每次登录教务处网址都会改变呢,

当然我们首先进行抓包来看看,浏览器向服务器发送了什么

我们发现请求的地址正是我们每次重定向到的网址

再查看下我们发送的表单

TextBox1、TextBox2中分别存储着我们的用户名和密码那么我们探索一下表单中另外三个参数的作用(PS:这命名随意到难以置信).RadioButtonList1、Button1很明显是url编码的值,我们将RadioButtonList1、Button1中的值进行url解码(注意此处url编码使用了gb2312)。

结果分别为学生和登录。可是另一个VIEWSTATE呢

VIEWSTATE

VIEWSTATE其实也算一个很古老的东西了,正是因为老旧的教务处也同样的古老,我们才能够发现他。正方是使用ASP开发的,而VIEWSTATE也算ASP一个特点(基本存在于已经废弃webform),它起到的作用主要将整个页面的控件的状态用base64编码传给后端,具体可以看浅谈viewstate

VIEWSATE是属性type=hide的input标签,我们按下f12查看它的值

于是我们试着用base64解码VIEWSTATE试试,为了使大家清楚viewstate到底存储了怎样的信息,我们进入信息较多的课表页然后读取它隐藏的VIEWSTATE将其进行解码

手动DOG脸

虽然http协议本身是无记忆的,但是VIEWSTATE能够使它拥有记忆的能力,它能够保留你之前的一系列操作。

注意viewstate是一路变化的,若想完全模拟浏览器,应当在写爬虫跳转时都获取当前页面viewstate

模拟登录的源码

我们先模拟输入10.5.2.80重定向的过程

#!/usr/bin/env python3
#-*- encoding:utf-8-*-
import requests
from bs4 import BeautifulSoup
?
url = "http://10.5.2.80"
?
res = requests.get(url) #无需添加header,教务处没有检查
print(res.url)
#‘http://10.5.2.80/(ekjnqwuvqxd5hq2whour5n45)/default2.aspx‘

res.url就是我们等会登录请求的地址,再模拟表单提交的过程

#我们使用Beautifulsoup来找到要提交的内容
redirect_url = res.url
content = BeautifulSoup(res.content)
payload = {
  "__VIEWSTATE":content.find(attrs={"name":"__VIEWSTATE"}["value"]),
  "TextBox1":"**",#输入你的账号
  "TextBox2":"**",#输入你的密码
  "RadioButtonList1":"%D1%A7%C9%FA",#代表你的身份为学生
  "Button1":"+%B5%C7+%C2%BC+",#虽然我也不懂按钮也要给value代表提交
}
res = requests.post(redirect_url,data=payload)
print(res.text)

你会发现你已经登录进入了教务处

不存在cookies的会话保存

如果你之前用过requests一定不会陌生session,我们知道http协议是无记忆连接那么他是如何保存一个用户的信息的呢?

答案在于cookies。

一般的登录在登陆后会的响应头中会有这么一行

Set-Cookie: *************

表示增加该cookie,浏览器收到这个响应后,会存储这个cookie到本地,在请求这个网站时,头部会自动携带这个cookie

后端会检查浏览器的cookie判断是否是用户

因此我在最初使用时,就用了自动处理cookies的requests.session,但是我发现我根本是多此一举

因为

它根本没有保存任何cookies!!

于是我陷入了深深的沉思。

还记得前面我们提过的那个奇怪的长度为24的字符串吗?

没有错,那个括号就是对你身份的标示。

不负责任的猜测:后台数据库在你登录后会随机分配一个hash后的字符串,然后重定向,如果登录成功,则在后台将这个字符与你账号对应,一旦中间字符是这个则表示是你登录

所以你将这个网址发给你的同学,直接连接这个网址就是你的登录界面了。

奇怪的GET

顺便提一句教务处不兼容现代浏览器的原因是因为它的下拉子菜单用了已经被废弃的IE标签,写个JS脚本替换下就可以

以选课页面为例子,你点击它会弹出子标签页,而当我将弹出的子标签页的网址输入在浏览器中发现它却把我重定向回了登录界面(浏览器的开发者工具不监听弹出子页面),难道不是get。

于是我打开了burpsuit比较了这两个包的差异

你发现了有什么不同吗?

就在于被我多标红的那一栏Referer

最后的抢课请求

其实没有好说的,抢课的请求页面和你浏览课程的页面是一样的,网址都是

http://10.5.2.80/(×××××××)/xf_xsqxxxk.aspx?xh=××××××&xm=×××××××&gnmkdm=N121109

区别在于请求方式和referer

只要老实查看表单模拟表单提交就可以了

全部脚本

别想了,怎么可能给你全部的脚本,自己去写吧!

或说写这么长的文章早可以把教务处管理员JWC01的密码爆破出来

时间: 2024-11-09 06:04:10

正方教务处抓包分析的相关文章

tcpdump抓包分析具体解释

說實在的,對於 tcpdump 這個軟體來說,你甚至能够說這個軟體其實就是個駭客軟體, 因為他不但能够分析封包的流向,連封包的內容也能够進行『監聽』, 假设你使用的傳輸資料是明碼的話,不得了,在 router 上面就可能被人家監聽走了! 非常可怕吶!所以,我們也要來瞭解一下這個軟體啊!(註:這個 tcpdump 必須使用 root 的身份執行) [[email protected] ~]# tcpdump [-nn] [-i 介面] [-w 儲存檔名] [-c 次數] [-Ae] [-qX] [

云计算之路-阿里云上:Wireshark抓包分析一个耗时20秒的请求

这篇博文分享的是我们针对一个耗时20秒的请求,用Wireshark进行抓包分析的过程. 请求的流程是这样的:客户端浏览器 -> SLB(负载均衡) -> ECS(云服务器) -> SLB -> 客户端浏览器. 下面是分析的过程: 1. 启动Wireshark,针对内网网卡进行抓包. 2. 在IIS日志中找出要分析的请求(借助Log Parser Studio) 通过c-ip(Client IP Address)可以获知SLB的内网IP,在分析Wireshar抓包时需要依据这个IP进

Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续二)

一.URL分析 通过对“Python机器学习”结果抓包分析,有两个无规律的参数:_ksTS和callback.通过构建如下URL可以获得目标关键词的检索结果,如下所示: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stat

使用Fiddler对手机进行抓包分析

场景:一个html页面,安卓app使用webview来显示,但是显示效果不是预期的.于是自己写了一个基本webview的demo,使用webview的loadurl方法请求这个html页面.可以正确显示,但是客户端组抓包说我请求的地址不一样,让我自己抓包分析. 分析:app在请求这个页面时请求附加了字符串及cookie等信息. 解决方法:使用Fiddler抓包,抓包过程网上有很多教程,注意一点有的手机可能设置代理时不能设置全局代理,可以使用ProxyDroid来设置全局代理. Fiddler抓包

云计算之路-阿里云上:超过70秒的请求抓包分析

超过70秒的请求是通过分析IIS日志发现的: 10.159.63.104是SLB的内网IP. 通过Wireshark抓包分析请求是9:22:21收到的(tcp.stream eq 23080): 09:22:21.299838000 10.159.63.104 10.161.241.208 HTTP 291 GET /eastsea/p/3764040.html HTTP/1.0 这个请求响应内容的长度是:Content-Length 1154110(1.1MB) 云服务器(ECS)在收到请求后

Wireshark抓包分析从入门到精通

曾近有个牛逼的实战课程放在你的面前,你不懂得好好珍惜,直到失去后才追悔莫及,如果G-LAB可以给你再来一次的机会,你会不会抓住?没错,G-LAB真的给了你再来一次的机会.[Wireshark抓包分析从入门到精通]主讲<郭主任>(月光宝盒索取)请联系QQ:2853771084

TcpIP协议,HTTP,DNS 实战:基于wireshark与BurpSuit抓包分析

TcpIP协议,HTTP,DNS 实战:基于wireshark与BurpSuite抓包分析

python Pycurl 库 —— 实现对网站抓包分析

经常使用基调网络的同学,可能对基调网络对页面元素的性能展示感觉很好.它可以做到对一条URL做详细的检测,包括:阻塞时间.DNS解析时间.建立连接时间.SSL握手时间.发出请求时间.首包时间等. 其实,我们也可以做到.比如Python pycurl 库就可以做到对数据的收集,然后可以对收集的数据写入redis或者Mysql.最后前端使用echars通过图形的形式进行展示出来. echars是百度一个开源项目,功能很强大(项目URL:http://echarts.baidu.com)可以将数据通过各

[转]Linux操作系统tcpdump抓包分析详解

PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息.因此系统中存在网络分析工具主要不是对本