升学e通网逆向
网站分析
最近看到都在说升学e通网这个网站:https://www.ewt360.com/
那么废话不多说,看看这个网站:
打开网站输入账号密码,
账号:12345678911
密码:123456
可以看到网站url跳转到:https://web.ewt360.com/register/#/login
加密点:sign、password
重新发起一次请求、看看异同
可以看到password没有变化、sign变了
找加密点
1、sign
直接搜索大法:
发现sign太多,一般得赋值为sign=、sign:再次搜索:
搜索sign:时发现可疑点,点击去看看,打上断点
加密函数很简单,直接扣下来改写
const getHeadersCommon = () => {
const now = new Date().getTime()
const token = Cookies.get('token')
console.log(token)
const returnData: any = {
timestamp: now,
platform: 1,
sign: md5(now + 'bdc739ff2dcf').toString().toLocaleUpperCase(),
secretId: 2,
}
import time
import hashlib
timestamp = str(int(time.time() * 1000))
sign = hashlib.md5((timestamp + 'bdc739ff2dcf').encode(encoding='utf-8')).hexdigest().upper()
print(sign)
2、password
同理:搜索大法
结果太多,也没有合适得结果
换一种方式,查找堆栈:
向上查找,发现一个LoginPassword,很像加密点
点进去看看,打上断点重新请求,成功断住
此时得密码是还未被加密的,跟着加密点进到加密函数
可以看到密码,进入加密函数
import CryptoJS from 'crypto-js'
const key = CryptoJS
.enc
.Utf8
.parse("20171109124536982017110912453698");
const iv = CryptoJS
.enc
.Utf8
.parse('2017110912453698'); //十六位十六进制数作为密钥偏移量
const encrypt = (word: string) => {
let srcs = CryptoJS
.enc
.Utf8
.parse(word);
let encrypted = CryptoJS
.AES
.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted
.ciphertext
.toString()
.toUpperCase();
}
export const passwordEncrypt = (password: string) => {
if (typeof password === 'undefined') return undefined
if (!password) return ''
return encrypt(password)
}
加密函数找到
改写:
CryptoJS = require("crypto-js")
const key = CryptoJS.enc.Utf8.parse("20171109124536982017110912453698");
const iv = CryptoJS.enc.Utf8.parse('2017110912453698'); //十六位十六进制数作为密钥偏移量
function getEncryptedPassword(word) {
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString().toUpperCase();
}
测试:
和加密结果一致
问题:你可能会问,问什么sign不找堆栈呢,要搜索呢,而password要找堆栈呢?
首先,这里的加密都可以通过找堆栈信息找到加密点,只是花费时间长短的问题,搜索用的时间段,那么就使用了搜索。
堆栈中也有对应的生成sign的地方,你也可以打上断点追堆栈,只是相对麻烦一点