基础入门-加密编码算法
前言
在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备,本章内容都是关于各种加密编码等知识,便于后期的学习和发展
常见加密编码等算法解析
MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等
MD5
最常见,常见的有16位和32位,密文由A-Z、0-9组成,不可逆(即不能逆向的破解)。
16位的是32位中间的16位。
密码常用MD5加密
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
总体流程如下图所示,每次的运算都由前一轮的128位结果值和当前的512bit值进行运算。
md5虽然不可逆,但可采用枚举的方法破解(即将明文进行加密,不断尝试,和你提供的密文进行匹配,用枚举的方法,提前把可能性搞出来,进行比对,从而找到明文)。
常用解密网站
SHA
密文由A-Z、0-9组成,SHA家族的五个算法分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,后四种称为SHA2,不可逆。
ASC:ASCII
进制
二进制
有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一。
例如:二进制数10110011可以写成(10110011)2,或写成10110011B。
八进制
八进制的基数R=8=2^3,采用0,1,2,3,4,5,6,7八个数字,逢八进1。并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加O表示。
例如:二进制数据 (11 101 010 . 010 110 100)2 对应八进制数据 (352.264)8或352.264O。
二进制/八进制换算表
二进制 | 八进制 |
---|---|
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
十进制
十进制数是组成以10为基础的数字系统,有0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成。
十六进制
两个基本特点:它由十六个数码:数字0~9加上字母A-F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基数R=16=2^4,通常在表示时用尾部标志H或下标16以示区别,在c语言中用添加前缀0x以表示十六进制数。
例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。
时间戳
时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。
unix时间戳是从1970年1月1日开始所经过的秒数,数据库记录时间相关的内容时常用。
在数据库里面,进入用户的登录的时间的时候,或者用户注销等时间,不会使用2021-08-13 18:10:47这样子的格式,他会使用1628849448时间戳的格式,
URL
统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。URL编码,“%”加两位A-Z、0-9的组合,“ ”=%20
浏览器只会解密一次。
二重、三重加密一般是自己进行绕过的时候。
网站上看到%数字,表示是URL编码,加空格就转换成%–的编码。
这个%31可能会进行二次加密,会让人误会,如果直接写%31,有可能对方会把%31在进行转换,也可能会识别。
如果看到%31,你得想到很有可能是二次加密。
BASE64
常见的传输8Bit字节码的编码方式。
0-9,a-z(大小写随机组合),是区分大小写的。
长度随着明文长度增加,明文多长,密文越长。
经常会在字符串后面出现等于号。
常见编码:代码、密码、参数。
浏览器只做一次加密,在渗透绕过的时候可能会使用二次,三次加密方式
Unescape
%u+4位的数字,对应两位字符,主要应用WEB应用上
AES
是一种安全的加密方式,加密时需要加密模式,密码,偏移量,数据块,填充,输出成base64或hex。密文中常常出现“/”“+”,用base64解密出来是乱码,有很大可能是AES加密。逐渐替代MD5,常见于注重安全的大型网站、安全比赛。
DES
类似于BASE64,有时候+会出现字符串里
最好加密,解密的时候用一个平台,可能参数不一样
常见加密形式算法解析
- 直接加密
- 带偏移
- 带干扰
- 带位数
- 带salt
- 带密码
- 带模式
- 自定义组合(自己写的加密算法)
常见加密方式
- 枚举
- 自定义逆向算法
- 可逆向算法
常规加密算法的特性
长度位数,字符规律,代码分析,搜索获取(在网上搜索,看网上那种加密和当前的类似)等
某个CTF比赛题目
加密代码
下载下来,我们来看一下加密的代码
加密顺序:先md5,在ord,在base64
解码顺序:从后往前,再base64,再ord,再md5
解密代码
解题思路:加密是怎么写的,解密就反过来写