欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > js前端数据加密 CryptoJS库加密 黑盒情况下寻找web的加密算法 代码混淆

js前端数据加密 CryptoJS库加密 黑盒情况下寻找web的加密算法 代码混淆

2025/2/23 11:30:56 来源:https://blog.csdn.net/2301_81155391/article/details/145791209  浏览:    关键词:js前端数据加密 CryptoJS库加密 黑盒情况下寻找web的加密算法 代码混淆

前言 

前端的数据加密是对用户的输入的一个常见的加密方法   还有的就是防止我们的sql注入 如 id=MQ==   这个其实解密出来就是 id = 1    所以注入的思路就是  把 1和payload 一起加密然后 再进行注入

客户端的加密 => 数据加密传输 => 服务端解密 => 服务端的处理
传输的数据

1   加密   xxx  payload     xxx  payload     解密 (解码不出来只能 把payload 进行加密 才能进行执行)  1 

直接进行注入

 这样就可以进行注入了    后端解密出来还是 我们相应的代码

CryptoJS库加密

    <script src="./crypto.js">//引入加密库//使用库内函数进行加密</script>// base64加密<script>var str = "xiaodisec";var base64 = btoa(str); //btoa是原生态的console.log(base64);</script>

  //MD5加密var md5str=CryptoJS.MD5(base64str).toString();console.log(md5str);//SHA1加密var shastr = CryptoJS.SHA1(str).toString(); // 注意:1是数字1console.log(shastr)//HMAC加密var key = 'key';var hash = CryptoJS.HmacSHA256(key, str);var HMACstr = CryptoJS.enc.Hex.stringify(hash);console.log(HMACstr);// 使用AES进行加密   //模式是ECB的时候是不需要key的var aseKey = "aeskey"     // 定制秘钥,长度必须为:8/16/32位, 长度不一致也没问题// 加密 DES/AES切换只需要修改 CryptoJS.AES <=> CryptoJS.DESvar aesstr = CryptoJS.AES.encrypt(str, CryptoJS.enc.Utf8.parse(aseKey),  // 参数1=密钥, 参数2=加密内容{mode: CryptoJS.mode.ECB,// 为AES的工作方式padding: CryptoJS.pad.Pkcs7  // 当加密后密文长度达不到指定整数倍(8个字节、16个字节)则填充对应字符}).toString(); // toString=转字符串类型console.log(aesstr); // 在弹窗中打印字符串// 使用DES进行加密var deskey = "deskey"     // 定制秘钥,长度必须为:8/16/32位, 长度不一致也没问题// 需要加密的内容// 加密 DES/AES切换只需要修改 CryptoJS.AES <=> CryptoJS.DESvar desstr = CryptoJS.DES.encrypt(str, CryptoJS.enc.Utf8.parse(deskey),  // 参数1=密钥, 参数2=加密内容{mode: CryptoJS.mode.ECB, // 为DES的工作方式padding: CryptoJS.pad.Pkcs7  // 当加密后密文长度达不到指定整数倍(8个字节、16个字节)则填充对应字符}).toString(); // toString=转字符串类型console.log(desstr); // 控制台打印 CDVNwmEwDRM

RSA加密 需要重新导入一个库

        //RSA 加密   这个需要公钥和私钥     var PUBLIC_KEY = "";var PRIVATE_KEY = "";//公钥加密var encrypt = new JSEncrypt(); //实例化加密对象encrypt.setPublicKey(PUBLIC_KEY); //设置公钥var encrypted = encrypt.encrypt(str); //对指定数据进行加密console.log(encrypted);//私钥解密var decrypt = new JSEncrypt(); // 创建解密对象decrypt.setPrivateKey(PRIVATE_KEY); //设置私钥var uncrypted = decrypt.decrypt(encrypted); //解密 'xiaodisec'console.log(uncrypted);

好用的解密网站 : 在线AES加密解密、AES在线加密解密、AES encryption and decryption--查错网

黑盒情况下寻找web的加密算法

第一个演示是自己写的这个 

思路 : 找到前端的加密逻辑然后   再截取加密的方法   使用前端的加密方法进行加密   这个就是和他相同的逻辑

前端就是一个登录页面

    <script src="https://unpkg.com/axios/dist/axios.min.js "></script><script src="crypto-js.js"></script><script>$('button').click(function() {var str = $('#password').val();var key = "aeskey";var aesstr = CryptoJS.AES.encrypt(str, CryptoJS.enc.Utf8.parse(key), // 参数1=密钥, 参数2=加密内容{mode: CryptoJS.mode.ECB, // 为AES的工作方式padding: CryptoJS.pad.Pkcs7 // 当加密后密文长度达不到指定整数倍(8个字节、16个字节)则填充对应字符}).toString();axios({method: "POST ",url: "login.php ",data: {user: $('#user').val(),password: aesstr}}).success(function(res) {// console.log("登录成功 ");if (res['infocode'] == 1) {alert("登录成功 ");Location("houtai.html")}})}); // 点击按钮触发事件</script>

这个时候我们如果想要进行弱口令爆破  就得找到加密逻辑

先找到加密逻辑的路径  :  当前的路径 就是  login.html

找到加密逻辑   复制一下

把空格删除掉sec 加密:lGqGMg7PmMYqT/aQHPI0gg==

怎么找key   就看前端有没有泄露

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词