算法还原之MD5
哈希算法—MD5介绍
算法的输入:任意长度的明文消息
算法输出:128比特长,或者说32个十六进制数的消息摘要
MD5的应用场景1、数据完整性校验:MD5算法常用于验证数据的完整性。在数据传输过程中,发送方可以计算数据的MD5哈希值将其发送给接收方。接收方收到数据后,再次计算哈希值并与发送方提供的哈希值进行比较。如果两者匹配,则说明数据在传输过程中没有被篡改。
2、密码存储:MD5算法也常用于密码存储。将用户的密码通过MD5哈希后存储到数据库中,即时数据库被泄露,攻击者也无法直接获取用户的明文你密码。然而,由于MD5算法存在已知的安全漏洞(如彩虹表攻击和碰撞攻击),现在已不推荐使用MD5来存储密码。更安全的做法是使用加盐哈希(如bcrypt或Argon2)。
MD5算法原理MD5算法的实现,可以分为以下4个步骤:
MD5算法的整体流程如上图所示,主要分为4步:处理原文、设置初始值、循环加工、拼接结果。
(一)处理原文处理原文就是一个关键词:补位,此处的补位有两个地方需要补。那具体怎么补位呢?
1、填充。如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充 ...
算法还原之RC4
一 简介一次一密对称加密算法:使用最广泛的流密码就是RC4
优点:密钥随机产生,只使用一次;无条件安全、加解密位加法运算效率高
缺点:要求密钥至少与明文一样长,密钥共享困难
流密码(序列密码)
流密码基本思想:
密钥流发生器f产生zi=f(k,σ \sigmaσi),即种子密钥k产生密钥流z=z0z1z2…
加密y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…
有内部记忆原件的为流密码,否则分组密码
内部记忆原件状态σ \sigmaσi独立于明文的称同步流密码,否则自同步流密码
同步流密码加密器=滚动密钥生成器+加密变换器
二元加法流密码,加密变换yi=zi⨁ \bigoplus⨁xi
一次一密是加法流密码原型,若zi=ki,则加法流密码就退化成一次一密
密钥流序列性质:极大的周期、良好的统计特性、抗线性分析、抗统计分析
一次一密的密钥长度和明文一样长,流密码不是,需要种子密钥通过密钥生成器产生密钥流
二 RC4算法原理介绍首先,RC4算法所依赖的最根本原理是:对明文使用同一个密钥异或两 ...
小程序数字信封算法分析
一 简介正常访问目标小程序,抓包,发现请求参数和返回包都是加密的
这种情况下肯定没法进一步测试的,这块可以小程序反编译看看了。
二 加解密逻辑1、使用unveilr反编译后,微信开发者工具打开:
直接打开时这种乱码的,可读性太差了。
可以使用在线JS美化工具( https://coding.tools/cn/javascript-beautifier ),将代码格式化下,这样读起来就方便多了。
2、观察数据包,会发现在请求和响应中有2个参数:“akey”和“data”:
3、直接在代码中全局检索一下关键字 “akey”:
4、可以看到和关键字关联的4个函数:
encodeAES_ECB
decodeAES_ECB
encodeRSA_module
decodeRSA_module
var u = { getRandomStr: function(t) { for (var e = [], n = 0; n < t; n++) { var r = Math.floor(26 * ...
应急演练勒索样本参考
一 简介勒索病毒(Ransomware)确实是一种常见的网络攻击手段,它会通过加密受害者电脑上的数据来瘫痪受害者的系统,并以此勒索赎金。这种恶意软件的攻击对象可以是个人用户,也可以是企业、政府机构等。一旦数据被加密,除非支付赎金以获取解密密钥,否则这些数据将无法被正常访问。
随着互联网技术的发展和网络环境的日益复杂,网络安全问题越来越受到重视。不仅公司,包括政府和个人用户都在增强网络安全意识,采取各种措施来预防和应对勒索病毒等网络威胁。应急演练就经常遇到的一种,模拟真实的攻击场景,让团队成员在实际操作中应用应急预案,检验应对能力。
二 Python实现简易勒索病毒生成用于加解密的公私钥生成1024位 RSA公私钥 并保存为.pem,先在本地生成,将生成的公钥和加密程序一起打包发送给受害者即可
import rsa # 生产1024位公私钥并保存为.pem 先在本地生成,将生成的公钥和加密程序一起打包发送到受害者即可pub, priv = rsa.newkeys(1024)pub = pub.save_pkcs1()with open(f"./keys/pubkey.pe ...
绕过图片验证码实现短信轰炸
一、前言图片验证码是一种常见的安全验证方式,广泛应用于网站、APP等场景,用于区分人类用户和恶意机器人。然而,由于设计或实现上的缺陷,图片验证码可能存在一些问题,导致短信轰炸漏洞的发生。
常见的图片验证码的问题,一般以下几种:
1、图片验证码前端生成&前端校验:通俗理解,就是调用前端JS中的函数生成一个验证码,那自然人工输入的验证码校验也是在前端完成的,这种没啥用,形同虚设。
2、图片验证码不失效:也就是服务端返回验证码之后,只要不再次请求,就一直可以使用,这也是好多年之前的系统常见的验证码漏洞。
3、验证码可识别:这玩意就比较鸡肋了,主要也是借用一些第三方的ocr做识别,比较好用的就是Python的第三方库—ddddocr了。
二、案例一简单介绍某金融站点首页,通过短信验证码登录,在点击发送短信的时候,会弹出图片验证码:
成功输入图片验证码后,会向手机号发送短信验证码,具体数据包如下:
参数分析
对比上图,共有5个参数:
mobile_tel:13888888888image_code:5321signature_data:M3IC7p1kH5bMMebP ...
算法还原之base64
基础概念加密与解密的关系
加密:是将原始的、可读的信息(明文)转换为另一种形式(密文)的过程,这样就可以防止未授权的访问。加密算法和密钥用于这一转换过程。加密的目的是确保信息的机密性,即使密文在传输或存储过程中被截获,没有正确的密钥也无法理解其内容。
解密:是加密的逆过程,它将密文转换回原始的明文。只有拥有正确密钥的人才能解密信息并获取原始内容。
加密和解密的关系可以概括为以下几点:
互为逆过程:加密和解密使用相同类型的算法,但执行相反的操作。加密算法设计时必须确保可以逆向操作,以便解密。
密钥的使用:加密和解密通常依赖于密钥。在加密过程中使用密钥生成密文,在解密过程中使用相同的密钥从密文恢复明文。密钥的安全管理是加密系统能否有效工作的关键。
安全性:加密系统的设计目标是确保即使攻击者知道加密算法,也无法在没有密钥的情况下解密信息。因此,加密算法通常是公开的,而密钥则必须保密。
应用场景:加密和解密广泛应用于多种场景,如网络安全中的数据传输、数据存储、数字签名等,以确保信息的保密性、完整性和可用性。
在现代密码学中,加密和解密算法多种多样,包括对称加密(如AES)、非对称加密 ...
海南航空hnsign逆向
一、逆向目标
目标:海南航空hnsign逆向
链接:https://m.hnair.com/#/login?_k=oepcby
简介:签名算法:通常签名有一个对象组合的操作,字符串拼接的操作,然后再对这个对象属性或字符串进行一个排序,组合的代码,看不懂,最方便的方式调试,拿到它组合后的结果。
二、逆向参数跟进这个加密函数中,可以发现依旧是webpack:
a.default._makeSign(null, c, p, null, n)
找到定义对象 “a” 的地方,向上翻,找到如下代码:
a = E(n(38195))
1、扣取启动器正常方法,在函数 n 处,下断点,定位到启动器位置:
改写后,启动器如下:(和前面password的一样)
var _b!function(n) { var c = {}; function b(e) { var s = c[e]; if (void 0 !== s) return s.exports; var i ...
海南航空Desc补环境
一、逆向目标
目标:海南航空Desc补环境初探
链接:https://m.hnair.com/#/login?_k=oepcby
简介:浏览器指纹,补环境初探
二、逆向参数1、定位desc加密位置搜索关键字 “desc=”,有两处位置,都打上断点,成功定位到了加密位置:
可以看到这块的 U 就是加密后的 desc
var u = function() { try { return (new born).getCiphertext() } catch (e) { return null } }();
return (new born).getCiphertext()
2、加密函数分析1)跟进定义的对象 born 中, ...
海南航空登录逆向webpack
一、逆向目标
目标:海南航空登录逆向webpack
链接:https://m.hnair.com/#/login?_k=oepcby
简介:逆向登录密码password(webpack加密)
二、逆向参数1、定位加密位置打XHR断点,向上跟栈,找到pin密码字段加密处:
也可以全局搜索关键字 “pin” 定位到函数所在的位置
2、逆向加密函数encryptedStringpin: i.default.encryptedString(t)
encryptedString: function(e) { try { var t = e; (new Date).getTime(); return t = window.isNative ? _.default.encryptedString(e) : m.default.encryptedString(e), (new Dat ...
网易163邮箱登录RSA加密
一、逆向目标
目标:网易163邮箱登录RSA加密018
链接:https://smart.mail.163.com/login.htm
简介:定位密码字段的加密算法和encParams参数的加密过程
二、逆向参数1. 密码字段pw(1)定位密码字段查看network字段,发现有3个可能涉及的请求接口:”gt”、”l”、”powGetp”
里面请求体都为 encParams加密字段,所以判断不出哪个接口是真正的password加密
所以,这块需要将这三个接口都打XHR断点。每个接口都进行跟栈。
直接无脑xhr断点,一步步向上跟栈就完事了。。。
(2)第一个接口:”gt”
向前跟栈,看能不能定位到和password相关的内容:这块具体过程就省略了……
继续向前一步跟栈,发现输入的用户名成功显示了,但没有任何密码相关的字段
向前继续跟一下栈,确实没有发现任何密码字段相关内容。猜测该接口 “gt” 不是密码加密接口。
(3)第二个接口:”l”
向前跟栈……
找到了这样一个栈中提到了”un”和”pw”字段,不出意外,对应下来,应该是用户名和加密后的密码
再向前跟 ...