基础入门-加密算法&Web&数据库&系统&代码
前言
本博客仅用于个人复习和学习,无商业用途
遇到问题,优先在本页搜索,检查是否有相关教程
- 请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者以及本博客无关
0x0. 密码存储加密
MD5:是由32或16位由数字“0-9”和字母“a-f”所组成的字符串,是一种不可逆的加密算法,不区分大小写,其中16位值取的是32位中的8-24位(但是不代表不可以解密,可以使用哈希碰撞进行解密)
MD5&salt:加盐操作,用于增强密码存储安全性的技术,由系统随机生成一个盐值(salt),将生成的盐值与用户密码进行拼接,拼接后进行哈希计算,将盐值和哈希值一起存储在数据库中,用以后续验证使用(DISCUZ网站)
SHA1(安全哈希算法):类似于MD5,只不过位数是40,同样是数字“0-9”和字母“a-f”所组成的字符串
NTLM:储存在windows的哈希密码,当密码为系统密码时,大概率是NTLM加密算法,和MD5类似,标准通讯安全协议
AES、DES、RC4是对称加密算法,引入对称密钥,密文特征与BASE64类似
0x1. 传输数据编码
BASE64:是由数字”0-9”和字母”a-f”所组成的字符串,大小写敏感,结尾通常有符号=,密文长度不固定,随着明文长度增加而增加
例如:国外web:www.comresearch.org/researchDetails.php?id=MD== MD==为BASE64编码的1
BASE32:特点是明文超过十个后面就会有很多等号,Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个
搜狐视频:https://tv.sohu.com/v/MjAyMTEyMzAvbjYwMTE0NTUxMC5zaHRtbA==.html 20211230/n601145510.shtml的base64就是MjAyMTEyMzAvbjYwMTE0NTUxMC5zaHRtbA==
URL:由数字”0-9”和字母”a-f”所组成的字符串,大小写敏感,通常以%数字字母间隔
个人博客: http://www.xiaodi8.com/search.php?q=%E5%9F%B9%E8%AE%AD
HEX:是计算机中数据的一种表示方法,将数据进行十六进制转换,它由 0-9,A-F组成
ASCII编码:将 128 个字符进行进制数来表示,常见 ASCII 码表大小规则:0~9<A~Z<a~z,详情参考ASCII码表,均由数字组成
应用场景:参数传递(注入影响),WAF绕过干扰写法应用,视频地址还原
0x2. JS前端代码加密
JS颜文字:一堆颜文字构成的js代码,AAencode可以直接解密
jother:只用!+()[]{} 这八个字符就能完成对任意字符串的编码
JSFUCK:与jother很像,只是没有{}
0x3. 后端代码加密
三种常见的后端代码:PHP、.NET、JAVA
加密原因:某些厂商开发了一些程序后,不想自己开发了几年的程序被别的厂商直接使用并且在上面扩展,此时会对后端源代码进行相应的加密
- PHP:加密后会乱码,一般头部会显示相应的加密方式
- .NET:加密后会变成DLL封装代码,相应的解密工具:ILSpy
- JAVA:JAR&CLASS文件,相应工具:IDEA (和逆向相关联)
0x4. 识别算法编码类型
- 看密文位数
- 看密文的组成特征(数字、字母、大小写、符号等)
- 当前密码存在的地方(Web、数据库、操作系统等应用)
0x5. 拓展补充资料
0x6. CTF实战
SQL注入漏洞测试(参数加密)综合
题目链接:https://www.mozhe.cn/bug/detail/110
启动靶场环境,如下图
先拿御剑扫一扫后台,看一看有没有相应的隐藏目录
访问一下第一个地址
发现有一个list.zip,点击下载
点击list.php,里面有这么一串解密代码,通过搜索mcrypt_module_open函数可以知道,这是一种AES加密算法
同时,以下两行代码告诉了我们一些AES加密的参数
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,''); |
同时,$data = mdecrypt_generic($td,base64_decode(base64_decode($data)));
告诉我们data又被进行了两次base64加密
查看网站源码,将id拿去解密,根据加密的逆过程,解密先拿去base64解密,再去以加密模式CBC,加密位数128位,加密密码ydhaqPQnexoaDuW3,加密偏移量2018201920202021的解密方式去解密
AES加密后默认的输出结果是base64编码格式的,所以后续只需进行一次base64加密即可。
base64解密为:eII8c3JeL0t0dxM7wb3Nzg==
拿去AES解密,如下图所示
后续涉及SQL注入,就不在这继续写下去
学逆向-Jsfuck-JSFUCK
题目链接:jsfuck - CTF练习平台_ - 学逆向论坛 - Powered by Discuz! (xuenixiang.cn)
打开附件,如下图所示
查看页面源码
发现是一堆符号,联想题目,应该是JSfuck加密,复制去解密,解密为CTF{whatfk}