由于每次打开电脑都要手动的登录校园网,导致很麻烦,所以写了一个爬虫来模拟浏览器自动登录校园网的功能
1.使用Burpsuit对校园网登录界面进行抓包分析
简介:burpsuite是一款渗透工具,运行环境是Java,所以需要先配置,主要可以用来对HTTP协议的工具包进行分析,也可以扫描网站的漏洞,接下来我们就用它来对校园网登录界面进行一个抓包。
1.1 设置浏览器代理




代理,就是拦截到浏览器的前面将数据包截取下来。
1.2 抓包分析
浏览器输入网址http://10.10.1.6/srun_portal_pc.php?ac_id=1&&userurl=http://www.lzu.edu.cn

然后打开burpsuite,点击forward(前进),就是讲刚才浏览器进行的动作,发送的包截取下来。

我们发现post一个表单到auth_action.php进行处理,在下面cookie里面有一个login还和上面一致。我们将报文复制一份进行分析,
POST /include/auth_action.php HTTP/1.1
Host: 10.10.1.6
Content-Length: 116
Accept: */*
Origin: http://10.10.1.6
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://10.10.1.6/srun_portal_pc.php?ac_id=1&&userurl=http://www.lzu.edu.cn
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: login=bQ0qQMxJvKa38joL2%252FjcHkC%252BmsG82yAhTQz7gmzQkugXpBZMrQUGiPHbG7NW34vDounugHSLx5A8mO4foZDYk3gvuzEOm8oE2SVDxfjaQLfPK6S3nHNRFaSa5KKhD%252FBgYozWIuXKWglZ6pYHmbs0l2KSqBUsQnuEp%252Fth0bbc%252BjfILH2xC501DX3AWRxf9c4IHUiuZZvZAhRsJGqlP9ypVRn9Ii6bTg%253D%253D; language=en; login=bQ0qQMxJvKa38joL2%252FjcHkC%252BmsG82yAhTQz7gmzQkugXpBZMrQUGiPHbG7NW34vDounugHSLx5A8mO4foZDYk3gvuzEOm8oE2SVDxfjaQLfPK6S3nHNRFaSa5KKhD%252FBgYozWIuXKWglZ6pYHmbs0l2KSqBUsQnuEp%252Fth0bbc%252BjfILH2xC501DX3AWRxf9c4IHUiuZZvZAhRsJGqlP9ypVRn9Ii6bTg%253D%253D
Connection: close
action=login&username=********&domain=@cernet&password={B}MTk5NjEy&ac_id=1&user_ip=&nas_ip=&user_mac=&save_me=1&ajax=1
下面是post出去的表单数据,username通过猜测肯定是用户名,然后password是密码,但是发现这个是一个加密的报文,我们来打开firebug查看下网页的javascript代码,发现是base64加密,save_me字段应该是是否记住密码,如果点击了记住密码就是1否则就是0,接下来我们验证一下这个密码字段是否是base64.

选中password字段,然后点击send to decoder,decoder是burp的一个编码解码模块,可以进行解码

发现密码和输入的一致但是前面加了一个{B},可能有什么标志位,接下来,我们继续对这个包进行分析,我们将它发送到repeater模块(中继器模块)可以对包进行修改。右击选中send to repeater


选择Go,发送包,看返回结果是什么

login_ok说明我们已经模拟浏览器登陆成功,但是我想测试下去掉几个无关紧要的字段是否也可以登录呢。经过repeater发包测试发现只有这几个字段是必须的。

经过测试只有request是如上的请求报文,我们就可以登陆成功,接下来我们用python模拟这个请求发送数据。
以下是代码:
import urllib.request
url="http://10.10.1.6/include/auth_action.php"
password="{B}MTk5NjEy"
username="********"
ac_id='2'
save_me='1'
ajax='1'
cookie="login=bQ0qQMxJvKa38joL2%252FjcHkC%252BmsG82yAnZjIv2aOiNLgdcFisQOPGduNfpXrq1m1kMaO3V9pmNJPwW7CiRVsfuOiIH7CP%252BlGaKj03wx3EcoSa1nagEF2HgnfjJcmJl6udXJxskZT0T9dmFgWtrhEObjLeL%252B05%252B3BB0l8ay8RfSeheGn%252F6p7YnxP46H43utiPMSxuZEl5YwF0dIA%253D%253D; language=en; login=bQ0qQMxJvKa38joL2%252FjcHkC%252BmsG82yAnZjIv2aOiNLgdcFisQOPGduNfpXrq1m1kMaO3V9pmNJPwW7CiRVsfuOiIH7CP%252BlGaKj03wx3EcoSa1nagEF2HgnfjJcmJl6udXJxskZT0T9dmFgWtrhEObjLeL%252B05%252B3BB0l8ay8RfSeheGn%252F6p7YnxP46H43utiPMSxuZEl5YwF0dIA%253D%253D"
postdata=urllib.parse.urlencode({
"username":username,
"password":password,
"ac_id":ac_id,
"save_me":save_me,
"ajax":ajax,
"action":"login"
}).encode('utf-8')
req=urllib.request.Request(url,postdata)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')
req.add_header("Cookie",cookie)
data=urllib.request.urlopen(req).read()
print(data)