[求助] 教务系统模拟登录(不是方正)

2019-12-06 02:00:16 +08:00
 Elissa

准备写个模拟登录教务系统的小玩具,先观察了请求发送的情况

主页是这样的

使用 chrome 的开发工具看了 network 网络请求,因为登录后立马跳转,勾选了 preserve log,抓到了如下图请求

具体参数如下

General

Request URL: http://校园网 ip/student/Login.aspx?ReturnUrl=%2fstudent%2fscore.aspx
Request Method: POST
Status Code: 302 Found
Remote Address: 校园网 ip
Referrer Policy: no-referrer-when-downgrade

请求头

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Content-Length: 466
Content-Type: application/x-www-form-urlencoded
Cookie: safedog-flow-item=928444C58E0B5342094C372124632918; CheckCode=m7j9
DNT: 1
Host: 210.45.135.228
Origin: http://校园网 ip
Proxy-Connection: keep-alive
Referer: http://校园网 ip/student/Login.aspx?ReturnUrl=%2fstudent%2fscore.aspx
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36

Form Data

__EVENTTARGET: 
__EVENTARGUMENT: 
__VIEWSTATE: /wEPDwULLTE5MDg0NjI4MTNkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBRpjdGwwMCRMb2dpblN0YXR1c3N0dSRjdGwwMQUaY3RsMDAkTG9naW5TdGF0dXNzdHUkY3RsMDMFWZuB4l0tH4dvBUeAP+jStdEyA/drRT4hCrSAZjcX1A==
__VIEWSTATEGENERATOR: 630CEE1E
ctl00$Content$Login1$UserName: 201818602037
ctl00$Content$Login1$Password: 090035
ctl00$Content$Login1$GetCode: m7j9
ctl00$Content$Login1$LoginButton: 登录

真实用浏览器登录后在响应头能看到返回的 cookie,现在想做的也是通过模拟请求来拿到这个 cookie,但是先使用模拟发送请求工具后返回结果是主页的 HTML,也就是第一张图,请教问题出在哪

ps:模拟请求的时候请求头和 form data 都是直接复制的,不可能漏掉或错误

1891 次点击
所在节点    程序员
14 条回复
orzfly
2019-12-06 02:26:05 +08:00
看来是 ASP.net Web Form ?你可能要模拟一下 __VIEWSTATE。

这个网页可能不止发了一个请求:也许你输入完一个输入框后,就发了一个请求更新了 VIEWSTATE。

除了看请求之外,也许你可以在源代码里搜索 __doPostBack 看看什么事件下会触发。
AngryPanda
2019-12-06 02:27:21 +08:00
210.45.135.228 这是啥 IP
MooRider
2019-12-06 02:27:40 +08:00
你想直接获取 cookies? 哪用这么麻烦. 如果用的是 python 直接用.session 保持登陆状态就可以, requests 会自动帮你维持 cookies 状态.
比如
a=requests.session
b=a.post(url,data)
这样 post 之后你的所有用 a 进行的操作都将保持这个 b 获取来的 cookies
建议在提问之前看看官方文档
Elissa
2019-12-06 02:30:29 +08:00
@AngryPanda 应该是学校服务器的 ip,不知道外网能不能访问,你可以试下
AngryPanda
2019-12-06 02:31:03 +08:00
淮北师范大学信息学院教务系统😄
vmebeh
2019-12-06 02:32:45 +08:00
拿到登录页的 html 源码,把要提交的 form 里面的 hidden 属性的 input 的 value 读出来也一起提交,不要用抓到的数据,一次性的

那四条下划线开头的是 asp.net 的 form 自带的
AngryPanda
2019-12-06 02:33:59 +08:00
楼主学号密码就这样公开了吗
AngryPanda
2019-12-06 02:34:51 +08:00
UserName: 201818602037
Password: 090035
Elissa
2019-12-06 02:35:43 +08:00
@AngryPanda 现在也查不到成绩
Elissa
2019-12-06 04:14:30 +08:00
@MooRider python 已经尝试成功了,php 使用 curl 还是不行
ruxuan1306
2019-12-06 04:24:20 +08:00
VIEWSTATE
VIEWSTATEGENERATOR
如 @vmebeh 所言,大概率这两参数要动态构造,firefox 可以重放 http 请求,可以试试是不是确实如此。
Elissa
2019-12-06 05:08:32 +08:00
@ruxuan1306
python 已经尝试,这两个写死,甚至验证码写死,更换学号和密码可以成功登录
现在使用 php 的 curl 发请求,在 wireshark 抓包时发现 ctl00$Content$Login1$LoginButton: 登录 这个参数时含有中文
value 值与真实浏览器登录不一致
dangyuluo
2019-12-06 05:23:54 +08:00
那个漏洞百出的是正方
Elissa
2019-12-06 06:00:22 +08:00
@ruxuan1306 传 form data 时参数打错了,php 也可以获取到了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/626372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX