基础入门-加密编码算法
前言:在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备,本次课程将讲解各种加密编码等知识,便于后期的学习和发展。
#常见加密编码等算法解析
MD5, SHA, ASC,进制,时间戳, URL, BASE64, Unescape, AES, DES 等
#常见加密形式算法解析
直接加密, 带 salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等
#常见解密方式(针对)
枚举,自定义逆向算法,可逆向
#了解常规加密算法的特性
长度位数,字符规律,代码分析,搜索获取等
md5
全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。
md5特性
不可逆
具有高度的离散性
压缩性(任意长度的数据,算出的md5值得长度都是固定的)
弱碰撞性(现在网上有很多彩虹表,挺容易碰撞的)
几种哈希算法比较:
md5——–32位的16进制表示
sha1——-40位的16进制表示
sha256—–64位的16进制表示
sm3——–64位的16进制表示
URL 编码(百分比编码)
URL 编码将字符转换为可通过因特网传输的格式。
URL 只能使用 ASCII 字符集 通过因特网进行发送。
由于 URL 通常包含 ASCII 集之外的字符,因此必须将 URL 转换为有效的 ASCII 格式。
URL 编码使用后跟十六进制数字的 “%” 替代不安全的 ASCII 字符。
URL 不能包含空格。URL 编码通常使用加号(+)或 %20 替代空格。
base64编码
Base64编码就是使用64个字符作为一个基本字符集:小写字母a-z、大写字母A-Z、数字0-9、符号”+”、”/“(再加上作为垫字的”=”,实际上是65个字符)。然后,所有其他符号都根据一定规则转换成这个字符集中的字符。
Base64 编码是用64(2的6次方)个特定的ASCII字符来表示256(2的8次方)个ASCII字符,也就是说三个ASCII字符经过Base64编码后变为四个的ASCII字符显示(公约数为24),编码后数据长度比原来增加1/3,不足3n用“=”补足。
2、演示案例
1.某 CTF 比赛题目解析-脚本自定义算法组合逆向
打开bugku,找到
给的数据为 fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
加密算法如下
大概读了一下是用一个MD5后ISCC为密钥,对密钥重复扩展到待加密数据的长度,然后对它们的每个字节进行了密钥与明文的acill的数字值相加后对128取余,再恢复成字符串,然后进行base64编码,题目中给出的一串字符串明显用了base64编码,所以我们反向推出data
或者
Flag:{asdqwdfasfdawfefqwdqwdadwqadawd}
2.某 CMS 密码加密解密-MD5+salt
某CMS密码是加盐md5,如下图所示,找到盐值
直接解密,无法成功
加盐解密,成功,但是需要付费
付费后 成功查到结果
3.某 URL 加密地址的漏洞测试-AES+Base64+自定义
打开墨者学院-sql注入漏洞测试(参数加密)
进入靶场
点击通知
扫描地址,找到一个目录
打开,泄露备份文件
下载,解压,查看源码
分析
了解了加解密过程,接下来注入即可。
参考:https://blog.csdn.net/qq_36585338/article/details/128057663
4.某实际应用 URL 地址参数加密-搜索特定关键字加密字符串
谷歌搜索url中带有id=1(1进行base64编码)的url,可以看看
inurl:id=MQ==
3、涉及资源
https://tool.lu/timestamp/ 在线时间戳转换
http://tool.chacuo.net/cryptaes 在线AES加密解密
https://www.cmd5.com/ MD5在线解密