V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Elissa
V2EX  ›  程序员

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

  •  
  •   Elissa · 2019-12-06 02:00:16 +08:00 · 1873 次点击
    这是一个创建于 1800 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    主页是这样的

    jiaowu1.png

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

    jiaowu1.png

    具体参数如下

    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 都是直接复制的,不可能漏掉或错误

    orzfly
        1
    orzfly  
       2019-12-06 02:26:05 +08:00
    看来是 ASP.net Web Form ?你可能要模拟一下 __VIEWSTATE。

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

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

    那四条下划线开头的是 asp.net 的 form 自带的
    AngryPanda
        7
    AngryPanda  
       2019-12-06 02:33:59 +08:00 via Android
    楼主学号密码就这样公开了吗
    AngryPanda
        8
    AngryPanda  
       2019-12-06 02:34:51 +08:00 via Android
    UserName: 201818602037
    Password: 090035
    Elissa
        9
    Elissa  
    OP
       2019-12-06 02:35:43 +08:00
    @AngryPanda 现在也查不到成绩
    Elissa
        10
    Elissa  
    OP
       2019-12-06 04:14:30 +08:00
    @MooRider python 已经尝试成功了,php 使用 curl 还是不行
    ruxuan1306
        11
    ruxuan1306  
       2019-12-06 04:24:20 +08:00 via iPhone
    VIEWSTATE
    VIEWSTATEGENERATOR
    如 @vmebeh 所言,大概率这两参数要动态构造,firefox 可以重放 http 请求,可以试试是不是确实如此。
    Elissa
        12
    Elissa  
    OP
       2019-12-06 05:08:32 +08:00
    @ruxuan1306
    python 已经尝试,这两个写死,甚至验证码写死,更换学号和密码可以成功登录
    现在使用 php 的 curl 发请求,在 wireshark 抓包时发现 ctl00$Content$Login1$LoginButton: 登录 这个参数时含有中文
    value 值与真实浏览器登录不一致
    dangyuluo
        13
    dangyuluo  
       2019-12-06 05:23:54 +08:00
    那个漏洞百出的是正方
    Elissa
        14
    Elissa  
    OP
       2019-12-06 06:00:22 +08:00
    @ruxuan1306 传 form data 时参数打错了,php 也可以获取到了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2530 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:30 · PVG 09:30 · LAX 17:30 · JFK 20:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.