本节课意义:
1、遇到加密字符串能知道是什么加密方式;
2、能知道加解密需要的条件;
3、搞清楚加解密在渗透测试中具体的含义;
知识点:
1、存储密码加密-Web加密、数据库加密、操作系统加密;
2、传输数据编码-各类组合传输参数值;
3、代码特性(文件)加密-JS&PHP&NET&JAVA;
4、数据显示编码-字符串显示编码;
详细点:
密码存储加密:
MD5、SHA1、NTLM、AES、DES、RC4
MD5值是32位或16位由数字0-9和字母a-f所组成的字符串(摘要算法)
SHA1这种加密的密文特征跟MD5差不多,只不过位数是40(摘要算法)
NTLM这种加密是Windows系统的哈希密码,标准通讯安全协议
AES、DES、RC4这些都是对称性加密算法,引入秘钥,密文特征与Base64类似
应用场景:各类应用密文、自定义算法、代码分析、CTF安全比赛等
传输数据编码:
BASE64、URL、HEX、ASCII
BASE64值是由数字0-9和字母a-zA-Z + / =所组成的字符串,大小写敏感,结尾通常有符号=
URL编码是由数字0-9和和字母a-f所组成的字符串,大小写敏感,通常以%数字字母间隔
HEX编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由0-9、A-F组成
ASCII编码是将128个字符进行进制数来表示,常见ASCII码表大小规则:0-9<A-Z<a-z
识别算法编码类型:
1、看位数;
2、看密文特征(数字、字母、大小写、符号等);
3、看当前密文存在的地方(Web、数据库、操作系统等应用);
示例:
1、Web-ZZCMS-密文-MD5
MD5不可逆,但不代表不能解密,不直接通过算法来解密而是通过枚举撞库来解密,尝试生成很多的加密或对应的明文字符去枚举
2、Web-Discuz-密文-MD5&Salt
出现未找到的情况,一种可能是解密未成功,另一种可能是不是简单的MD5加密。
如果确定了网站是discuz,则可以百度discuz的加密方式
如下就是加了盐(salt):
找到盐之后,再拿着密文和盐去解密即可:
3、系统-Windows-密文-NTLM&HASH
使用mimikatz获取windows的明文密码及加密密码对照
LM:windows7之前的加密形式
NTLM:windows7之后的加密形式
4、综合-参数-密文传输-AES(对称加密)&BASE64
扫描路径下文件
先BASE64解码一次,再AES解码
5、文件加密
JS前端代码加密:
JS颜文字 jother、JSFUCK
颜文字特征:一堆颜文字构成的js代码,在F12中可直接解密执行
jother特征:只用! + ( ) [ ] { }这8个字符就能完成对任意字符串的编码。也可在F12中解密执行
JSFUCK特征:与jother很像,只是少了{ }
后端代码加密:
PHP .NET JAVA
PHP:乱码,头部有加密关键字信息
.NET:DLL封装代码文件
JAVA:JAR&CLASS文件
举例:Zend ILSpy(反编译.NET) IDEA
应用场景:版权代码加密,开发特性,CTF比赛等
PHP为例:
可以直接将代码文件上传到php文件解密平台,可以自动识别出加密方式,同时可以直接解密文件
6、数据库加密
MYSQl、MSSQL等
7、数据显示编码
UTF-8 GBK2312等
8、CTF赛题-buuoj-single dog-JS颜文字
使用linux系统,foremost attachment.jpg,会把图片一份为二,包含一份zip文件,打开后是颜文字
部分资源:
https://www.cmd5.com
https://utf-8.jp/public/aaencode.html
http://tmxk.org/jother
http://www.jsfuck.com
http://www.hiencode.com
http://tool.chacuo.net/cryptaes
参考资料: