免责声明:本篇文章仅用于学习交流,切勿用于违法犯罪,如使用者违法相关法律与本文作者无关!如有侵权,请联系本人删除
这是之前找课程的时候看到的网站,于是对他登录进行了一下逆向,这个比较简单,蛮适合小白练习。
网站:aHR0cHM6Ly93d3cuZ2FvdHUuY24v
通过抓包可以看到,这个请求就是登陆的请求
在进行登录调试的时候,不用每次都输正确的密码,在断点调试的过程中用123456这种密码也是可以的
通过其中的请求头可以看出,没有携带cookie
请求参数具有一些加密
可以尝试通过关键字搜索来试试,能不能定位到加密位置
搜索password显示出来的太多了
于是我们可以换一个 passwordOrig
在这里可以很明显的看出加密位置,我们点进去打上断点
发现在这一个断住了
我们可以将其他断点取消掉
在这里很容易看出加密的内容,所以我们可以在 网页的在线加密,来尝试,是否是标准的加密
可以看到和我加密哪里是一模一样的,所以可以直接使用js的Crypto-js
库,来实现加密,可以看到另一个加密是rsa加密,所以我们也可以使用这一种方式来加密,使用pytho。但是我采取了扣她原本代码的方式。
const CryptoJS = require("crypto-js")
function data_all(pwd){
return CryptoJS.MD5(pwd).toString()
}
console.log(data_all("123456"))
在调试的过程中,发现加密这个位置是不能调试的,可能是它使用的是vue,直接进入这个文件的话是获取到密码的位置,并不是加密的位置
但是我还是找到了其他方法,继续关键字搜索
这个位置简直长得和加密的样子一模一样,于是我们打上断点调试
发现在控制台输出还是出错,于是将代码扣到本地的node.js去运行
window = globalThis
const PUBLIC_KEY = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGjoM+ytfFfnLQnMoQNFvfhxNZ
20vq7mZA3/1RoJou6H9RMj5WKddLqsPs/0TbZJl7PZizGQwRRg6ObikmQiqpIFlR
XHkZL79bggTzKh/tBE1ZGFzyPe72/oei0alRfrvXiEBffK2xwdSgVp8t4vI61Pcq
KmXJpmkmnxwCL445IQIDAQAB`;
let instance;
const JSEncrypt = require('jsencrypt');
instance = new JSEncrypt();
instance.setPublicKey(PUBLIC_KEY);
function rsaEncrypt(content = '') {
return instance ? instance.encrypt(content) : content;
}
// console.log(rsaEncrypt("123456"))
对原本的代码进行了一点更改,因为有那个if就无法得到instance.encrypt(content)
而是 content
所以我们自己将if判断去掉
再补上一个window环境
这样这个网站登录就可以通过啦
我们来验证一下
会显示登录之后的用户名,以及登陆的手机号,这种就说明登录成功了
如果对你有帮助的话,点个赞在走吧