温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python如何调用jsDES加密

发布时间:2021-12-04 10:43:24 来源:亿速云 阅读:320 作者:柒染 栏目:网络安全

本篇文章给大家分享的是有关python如何调用jsDES加密,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

小伙伴提出了几个问题我们来一一解决吧

python如何调用jsDES加密

python如何调用jsDES加密

回顾一下背景:其实这个站每个月都会多家厂家做渗透,但也许看到密码加密了就pass这个方式了,但是当你肯比别人付出更多的耐心,就能比别人看到更多的风景,挖到更多的漏洞。

前提:是可暴力破解的,因为如果登陆几次就禁止此账号登陆了作此尝试意义不大。DES是对称加密,开发使用前端进行加密的所以不得不写上key到页面或js上。有了这个key,可以进行对密码同样加密之后,进行暴力破解。

问题一:第一,就是那个在线加解密网站可否说下呢看了表哥的文章去找 连找几个都不没找到需求加密方式的加解密网站。

回答一:加密网站是:

http://tool.chacuo.net/cryptdes。然后选用的是:


python如何调用jsDES加密

其实,细心一点可以发现我上次提及加密网站的时候,数据包截图中有个Referer字段,那里可以找到。

问题二:写的登录加密内容是

encryptByDES('{"username":"admin","password":"12345678"','232cb85***cd354'),解密之后的是iKUJ1等一长字符串,那这个232cb85跟解密后的有什么关系呢这个没理解。

回答二:因为该网站已经换了一种加密方式了,可以跟你仔细讲讲。其实des的key,知道原文跟密文也可以暴力破解出key的。

先理清一下思路,他页面中的加密函数是这样子的:

<script type="text/javascript">

function encryptByDES(message, key) {

var keyHex = CryptoJS.enc.Utf8.parse(key);

var encrypted = CryptoJS.DES.encrypt(message, keyHex, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

});

return encrypted.toString();

}

</script>

而同时在页面中定义了加密的key


python如何调用jsDES加密

也从上得知道加密的原文格式为:{"username":username”,"password":password},密码原文根据key进行des加密

所以根据以上情报可知得出关系:

1,要加密的原文为:

{"username":"admin","password":"12345678"}

2,key为232cb851727762bbf7dd097da3bcd354

(原网站改用其他非对称加密了,可以说下这个key,虽然也没说是哪个网站)

3,加密方式:

加密模式ECB,填充pkcs7padding,偏移量0,输出base64

4,密文:

iKUJ1KTtfI4NqIHAf7QQha71W4vil4uLWR1YQREFkJLsx1W/aKLcnt9Ni7PalkpP


python如何调用jsDES加密

问题三:通过burp重放数据包方式证明方法行不通 是怎么证明的。

证明方法是当你快速重复按的时候返回包是这样的:

python如何调用jsDES加密

只是在包里unicode编码了,不能直观看出,但实际上解码过后是一下这样的。在页面上会显示:“请不要这么快提交,稍后再试”。


python如何调用jsDES加密

问题四:接下来保存的js顺序还是有点错误我看截图f12控制台上mode-ecb.js不是在md5.js文件上么怎么保存时候其顺序在md5.js文件下方了。

回答四:对的,一开始我也遇到这个问题卡在这里,实际上只要按原网站正常加载顺序写在自己的html里面就可以实现了。

原网站加载顺序是这样的:


python如何调用jsDES加密

实际上加密用到的只有两个,mode-ecb.jstripledes.js

python如何调用jsDES加密

文末附上加密的JavaScript脚本,和暴力破解的脚本,和模拟的加密暴力破解源码。


python如何调用jsDES加密

所以测试的Html里应该这么写。(控制台能调用成功就可以放到python脚本去进行运行。)

<script src="tripledes.js"></script>

<script src="mode-ecb.js"></script>

<script type="text/javascript">

function encryptByDES(message, key) {

   var keyHex = CryptoJS.enc.Utf8.parse(key);

   var encrypted = CryptoJS.DES.encrypt(message, keyHex, {

       mode: CryptoJS.mode.ECB,

       padding: CryptoJS.pad.Pkcs7

   });

   return encrypted.toString();

}

</script>

然后再控制台就可以尝试了,输入:

encryptByDES('{"username":"admin","password":"12345678"}','232cb851727762bbf7dd097da3bcd354');


python如何调用jsDES加密

用到python脚本模块里,只需要新建一个js文件,把两个按顺序贴到里面就可以直接调用了。见附件main_total.js

问题五:文章中提到遇到的页面jsdes加密方式是pkcs7padding,是怎样确定这个页面的加密方式的?

回答五:注意细心观察页面js就可以发下他加密的填充方式了。

python如何调用jsDES加密

拓展:

写了一个简单模拟此次加密暴力破解的练习页面,在文末附件,可以尝试。

登陆成功截图。直接输入正确密码点击登陆无效(因为密码很简单,为了要脚本解题和避免一题多解,一定要自己构造http请求才能成功。)

接替成功截图。


python如何调用jsDES加密

最容易犯错误的是,贴了js文件,没有贴页面的js没有贴进去。

暴力破解判断特征就寻找返回的特点就好了。

使用python脚本暴力破解gif:


python如何调用jsDES加密

附上js加密和测试页面和爆破脚本,请自行下载。

下载链接:

https://pan.baidu.com/s/1kXlGkIVd7YDkRCtov01nOw

提取码:k8rg

main_total.js是合并的版本,test.php是模拟登陆的页面。


python如何调用jsDES加密

以上就是python如何调用jsDES加密,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI