模拟登陆网站,发现post表单时密码和账号都被加密,加密的js可以找到,但是加密的参数还有一个是服务器随机返回的,怎么办?

发布于 2022-09-07 08:04:55 字数 654 浏览 62 评论 0

一、
模拟登陆一个网站,发现post表单时密码和账号都被加密,加密后的数据传递给一个type属性为hidden的input,我想获取这个input,但是点击登录按钮后这个input就刷新了
这是js代码
这是登录的js代码,可以看出加密后的参数传为encoded
图片描述
我尝试将input的type属性hidden改为txt,再获取它的value,但是也没成功
二、
登录的验证码怎么获取
图片描述
验证码没有直接用URL给出,而是src=‘’,获取验证码的URL会加一个random的参数
post表单

上面是post的表单

最后网站链接为链接描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘴硬脾气大 2022-09-14 08:04:55

编码函数相当简单,可以直接转换成 python 代码,如下

# !/usr/bin/python2
# -*- coding: utf-8 -*-
import requests


def get_login_data():
    # 请替换成合适的域名
    url = 'http://xxx.xxx.xxx/Logon.do?method=logon&flag=sess'
    rsp = requests.get(url)
    rsp.raise_for_status()
    return rsp.text.encode()


def encode(usr, pwd, data):
    scode, sxh = data.split('#')
    raw = usr + '%%%' + pwd
    enc = ''
    for i in range(len(raw)):
        if i < 20:
            enc += raw[i] + scode[0:int(sxh[i])]
            scode = scode[int(sxh[i]):]
        else:
            enc += raw[i:]
            break
    return enc


def login():
    # encoded = encode(xx, xx, get_login_data())
    # requests.post(...)
    # ...

若遇到非常复杂的编码(加密)函数,可提取 javascript 代码,直接用 js 引擎(如 nodejs)执行它得到结果。

帅气尐潴 2022-09-14 08:04:55

我看到的encoded是通过请求这个接口/Logon.do?method=logon&flag=sess得到一字串,然后前半部分是需要混合的字串,后半部分是混合的长度,然后与用户名和密码拼接起来字串进行交叉混合得到最终的encoded
验证码你需要识别图片

怎樣才叫好 2022-09-14 08:04:55

人家防的就是你

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文