javascript逆向入门级别实战--某小网站登录密码加密分析

仅供学习,切勿用于非法用途!

难度

非常低

网站(请自行base64解码)

aHR0cCUzQS8vd3d3LnBpZ2FpLm9yZy8=

抓包分析

按F12打开浏览器开发者工具,选到network,准备抓包工作。

在这里插入图片描述

输入账号密码,点击登录,分析数据包
找到登录发送的数据包index.php?a=login和里面的加密字段password_encrypt

在这里插入图片描述

在这里插入图片描述

找加密处

登录请求不是xhr类型,所以不能下xhr断点,我们可以通过查看元素绑定的监听事件来入手。

在这里插入图片描述

点击查看登录这个按钮的click监听事件的js代码,跳转到login这个函数。
大致阅读一下,找到比较可疑的地方

在这里插入图片描述

然后我们在

$('#password_encrypt').val( encrypt(psw) );

这一行打断点,重新登录看看,等待运行到断点处,发现encrypt(psw)就是生成了加密的地方,传入的psw就是原密码
在这里插入图片描述
在这里插入图片描述

扣js代码

**现在我们知道加密的过程先是把原密码传入encrypt()这个函数,然后就会返回加密结果,所以我们要先扣出encrypt(),步骤看动图。 **
在这里插入图片描述
加密函数encrypt

function encrypt( str) {
    var encrypt = new JSEncrypt();
    encrypt.setPublicKey( 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYlII16dSwQErDgjIl8BzU4NEL2IzvyWiLNxie3mkpw6eseF/iUVb3bisAFH+lzgnrv/mBOKUMkbqtW2+8en/6r0hj6ctvGT+UOtg4P5LF/jxkbE+cA2fVJK2RaBzeEEbrKOvauVnGkEOvPVl1/NK4NgeN6aSPIK9ECfXcjlEOHwIDAQAB');
    var encrypted = encrypt.encrypt( str );

    return encrypted;
}

复制这个函数,新开一个浏览器窗口或者无痕模式,新建一个脚本,粘上代码运行看看,发现报错JSEncrypt is not defined,位置在第二行,说明抠出来的js还缺少JSEncrypt这个对象。
在这里插入图片描述

切换到实战网页,我们在encrypt()函数第二行下一个断点,把刚下的第一个断点取消,刷新网页重新登录,就会运行到第二个断点处,然后把鼠标放到JSEncrypt上面,就可以看到其实JSEncrypt就是t(t)
在这里插入图片描述
点击t(t)看这个函数怎么实现,发现是写在一个单独的jsencrypt.js的文件,遇到这种带有加密字眼且比较规范的文件名,这种文件多半都只写了加密的,所以可以直接把整个文件内容复制过去,省时省力。下拉看这个文件一共不到三千行代码,直接把整个jsencrypt.js文件的内容复制,放在抠出来的粘贴在申明encrypt()函数上面。
在这里插入图片描述
在新浏览器窗口运行扣出来的代码看看,控制台就打印出加密结果了。
在这里插入图片描述

仅供学习,切勿用于非法用途!
如果有不懂或者我讲解不详细的地方,欢迎留言交流。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在element-ui表格中,可以通过自定义列的方式来实现表格密码内容加密显示且可查看的效果,具体实现方式如下: 1. 首先,在element-ui的表格组件中定义一个自定义列,例如: ```html <el-table-column label="密码"> <template slot-scope="scope"> <el-input v-model="scope.row.password" type="password"></el-input> </template> </el-table-column> ``` 2. 在自定义列中,将密码字段绑定到el-input组件的v-model上,并将el-input组件的type属性设置为“password”,这样就可以将密码内容加密显示。 3. 接下来,我们可以在el-input组件的右侧添加一个眼睛图标,用来切换密码加密和明文显示。可以通过在el-input组件中添加一个append插槽来实现,例如: ```html <el-table-column label="密码"> <template slot-scope="scope"> <el-input v-model="scope.row.password" type="password"> <template slot="append"> <el-button icon="el-icon-eye" @click="togglePassword(scope.$index)"></el-button> </template> </el-input> </template> </el-table-column> ``` 4. 在togglePassword方法中,可以通过改变el-input组件的type属性来实现密码加密和明文显示的切换,例如: ```javascript methods: { togglePassword(index) { this.$nextTick(() => { const input = this.$refs.table.$el.querySelectorAll('.el-input__inner')[index]; const type = input.getAttribute('type') === 'password' ? 'text' : 'password'; input.setAttribute('type', type); }); } } ``` 通过以上方式,就可以实现在element-ui表格中将密码内容加密显示且可查看的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值