• 基础入门-加密编码算法


    前言

    在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备,本章内容都是关于各种加密编码等知识,便于后期的学习和发展

    常见加密编码等算法解析

    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值进行运算。

    image-20211111113215512

    md5虽然不可逆,但可采用枚举的方法破解(即将明文进行加密,不断尝试,和你提供的密文进行匹配,用枚举的方法,提前把可能性搞出来,进行比对,从而找到明文)。

    常用解密网站

    https://www.cmd5.com/

    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编码,加空格就转换成%–的编码。

    image-20211111114907862

    这个%31可能会进行二次加密,会让人误会,如果直接写%31,有可能对方会把%31在进行转换,也可能会识别。
    如果看到%31,你得想到很有可能是二次加密。

    BASE64

    常见的传输8Bit字节码的编码方式。
    0-9,a-z(大小写随机组合),是区分大小写的。
    长度随着明文长度增加,明文多长,密文越长。
    经常会在字符串后面出现等于号。
    常见编码:代码、密码、参数。
    浏览器只做一次加密,在渗透绕过的时候可能会使用二次,三次加密方式

    Unescape

    %u+4位的数字,对应两位字符,主要应用WEB应用上

    AES

    是一种安全的加密方式,加密时需要加密模式,密码,偏移量,数据块,填充,输出成base64或hex。密文中常常出现“/”“+”,用base64解密出来是乱码,有很大可能是AES加密。逐渐替代MD5,常见于注重安全的大型网站、安全比赛。

    image-20211111140727881

    image-20211111140808624

    DES

    类似于BASE64,有时候+会出现字符串里

    最好加密,解密的时候用一个平台,可能参数不一样

    常见加密形式算法解析

    • 直接加密
    • 带偏移
    • 带干扰
    • 带位数
    • 带salt
    • 带密码
    • 带模式
    • 自定义组合(自己写的加密算法)

    常见加密方式

    • 枚举
    • 自定义逆向算法
    • 可逆向算法

    常规加密算法的特性

    长度位数,字符规律,代码分析,搜索获取(在网上搜索,看网上那种加密和当前的类似)等

    某个CTF比赛题目

    加密代码

    image-20211111141040291

    下载下来,我们来看一下加密的代码image-20211111141033421

    加密顺序:先md5,在ord,在base64
    解码顺序:从后往前,再base64,再ord,再md5

    image-20211111141118458

    解密代码

    image-20211111141146526

    image-20211111141156202

    image-20211111141210225

    image-20211111141217981

    解题思路:加密是怎么写的,解密就反过来写

  • 相关阅读:
    关于全志A20的Ubuntu12.04 64位系统下环境配置及编译过程笔记【转】
    使用buildroot创建自己的交叉编译工具链【转】
    什么是make config,make menuconfig,make oldconfig,make xconfig,make defconfig,make gconfig?【转】
    JZ2440专用dnw 支持xp、win7、win8和win10系统【转】
    win10 x64下的DNW驱动不完全安装方法【转】
    GlusterFS
    iOS唯一标示符引导
    lftp使用
    教你10步闯进google play排行榜前列
    ${ }的用法
  • 原文地址:https://www.cnblogs.com/hirak0/p/15539681.html
Copyright © 2020-2023  润新知