第8天:基础入门-算法分析&传输加密&数据格式&密文存储&代码混淆&逆向保护

第八天

Untitled

本课意义:

1.了解加密编码进制在安全测试中的存在

2.掌握常见的加密解密编码解码进制互转的操作

3.了解常见的加密解密编码解密进制互转的影响


一、传输加密编码-发送回显

  1. 数据在传输的过程中进行了编码,对方的服务器可能会在接收的时候进行解码再带入
  2. 错误做法:如果我们还是按照自己原有思路不对自己的Payload(攻击语句)进行同样的编码的话,传入过去的数据就是不认识的东西,测试则无效
  3. 正确做法:测试的时候也要进行对Payload同样的加密或编码(保持同样的加密格式)进行提交
  4. 一般进行安全测试漏洞的时候,通常都会进行数据的修改增加提交测试,需要了解数据的格式、加密、编码的方式
  5. 以数据正确的格式发送、接收才行

登陆的数据包

用户名:admin	密码:123456

MA5加密算法
username=admin&password=123456
username=admin&password=e10adc3949ba59abbe56e057f20f883e

如果现在我进行密码的破解爆破
那在传入账号密码的值的时候

字典文件:

  1. 账号信息什么都不用改,直接去替换username=值即可
  2. 密码需要进行密码算法,保证password=值同等加密才行,因为密码在传输时使用的是如上的加密格式,对方在收到数据时都要进行解密,如果直接明文输入,那么对方也会对明文进行解密,那解密后的结果就是不是密码了

影响:

漏洞探针,要搞清楚加密值,才能按照正确的加密值做修改进行漏洞测试

参考资料——传输数据编码:

BASE64 URL HEX ASCII

  1. BASE64值是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,结尾通常有符号=
  2. URL编码是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,通常以%数字字母间隔
  3. HEX编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由0-9,A-F,组成
  4. ASCII编码是将128个字符进行进制数来表示,常见ASCII码表大小规则:09<AZ<a~z

二、数据传输格式-统一格式

image-20240312112108877

传输数据加密:同密码存储加密

传输数据格式:常规字符串 JSON XML等

  1. 30余种加密编码类型的密文特征分析(建议收藏)

    https://mp.weixin.qq.com/s?__biz=MzAwNDcxMjI2MA==&mid=2247484455&idx=1&sn=e1b4324ddcf7d6123be30d9a5613e17b&chksm=9b26f60cac517f1a920cf3b73b3212a645aeef78882c47957b9f3c2135cb7ce051c73fe77bb2&mpshare=1&scene=23&srcid=1111auAYWmr1N0NAs9Wp2hGz&sharer_sharetime=1605145141579&sharer_shareid=5051b3eddbbe2cb698aedf9452370026#rd

  2. CTF中常见密码题解密网站总结(建议收藏)

    https://blog.csdn.net/qq_41638851/article/details/100526839

  3. CTF密码学常见加密解密总结(建议收藏)

    https://blog.csdn.net/qq_40837276/article/details/83080460

影响:

  1. 发送漏洞探针:

    看发送方的数据格式是用来测试漏洞利用的时候,要注意是安装这个格式去测试去利用

  2. 回显数据分析:

    理清楚数据格式便于分析,有些返回的值也是加密数据


三、存储密码加密-应用对象

1.常见加密编码进制等算法解析

MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等

2.常见加密编码形式算法解析

直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等

3.常见解密解码方式(针对)

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

4.常见加密解码算法的特性

长度位数,字符规律,代码分析,搜索获取等

5.识别算法编码方法:

1.看密文位数

2.看密文的特征(数字,字母,大小写,符号等)

3.看当前密文存在的地方(Web、数据库、操作系统等应用),

4.产生的地方不同就有不同的加密方式,例如网站喜欢用MD5加密,系统喜欢用NTML加密

5.不仅要知道是什么加密方式和算法,同样要学会对搞不出来的,平台不支持,工具不支持的,可以用字典爆破或者猜

系统有固定的加密方式,有些可以解密,有些无法解密,无法解密的原因就是密码过于复杂

[!NOTE]

一些常见的加密解密方式,并不是算法的逆向解密,而是通过碰撞解密,例如MD5算法就是一个不可逆向的算法。现在大部分的解密方式都是基于碰撞式的解密,越简单的密码越容易碰撞出结果,越复杂的密码例如Huawei@123..da现有算力根本无法破解

想要识别密码的加密方式办法就是看源码

影响:

安全后渗透测试

得到了账号密码之后要去尝试登陆,如果解不出来就无法登陆

参考资料——密码存储加密:

MD5 SHA1 NTLM AES DES RC4

  1. MD5值是32或16位位由数字"0-9"和字母"a-f"所组成的字符串

  2. SHA1这种加密的密文特征跟MD5差不多,只不过位数是40

  3. NTLM这种加密是Windows的哈希密码,标准通讯安全协议

  4. AES,DES,RC4这些都是非对称性加密算法,引入密钥,密文特征与Base64类似


四、代码特性混淆-开发语言

代码混淆:

  1. JS前端代码加密:

  2. JS颜文字 jother JSFUCK

  3. 颜文字特征:一堆颜文字构成的js代码,在F12中可直接解密执行

  4. jother特征:只用! + ( ) [ ] { }这八个字符就能完成对任意字符串的编码。也可在F12中解密执行

  5. JSFUCK特征:与jother很像,只是少了{ }

后端代码混淆:

  1. PHP .NET JAVA

  2. PHP:乱码,头部有信息

  3. .NET:DLL封装代码文件,加保护

  4. JAVA:JAR&CLASS文件,,加保护

  5. 举例:加密平台 Zend ILSpy IDEA

  6. 应用场景:版权代码加密,开发特性,CTF比赛等

特定应用-数据库密文加密:MYSQL MSSQL Oracle Redis等

数据显示编码:UTF-8 GBK2312等

影响:

代码审计,逆向破解

写出来的程序对代码进行加密,加密之后无法知道编写源码的思路;保证源码的思路和编写流程他人无法得知,也无法对编写的程序进行二次开发

安全测试很重要的一点就是数据的格式和加密算法的熟悉,会大大提高我们挖洞找到漏洞的可能性


五、环境复现

1.传输数据-编码型&加密型等

1.某视频

https://tv.sohu.com/v/ dXMvMzUyMTU1MzUzLzUyMzcwMDEyNS5zaHRtbA==.html

文件名路径加密,base64解码

image-20240312095427111


2.某Web站
1.打开一个网站的后台管理员页面,进行登陆测试

image-20240312090454039

2.点击登陆之后监听到了错误的数据包,里面含有加密的密码

image-20240312090653576

3.尝试使用Burp进行抓包,也能看到输入的账号和加密后的密码

image-20240312092011974


3.APP-永恒雷霆

尝试登陆游戏账号,发现传输过去的数据都是加密的,具有自己特殊的算法。如果想要修改数据发送给对方,对方只会接收那种加密算法的数据,如果自己弄不懂这个算法,就无法进行测试

image-20240312094053774


2.传输格式-常规&JSON&XML等

1.查看登陆时的数据包的写法

image-20240312101759076

2.在开发环境中的格式有:数组、列表,根据格式一一对应
写法1——路径加密
btnPost=%E7%99%BB%E5%BD%95&username=admin&password=e10adc3949ba59abbe56e057f20f883e&savedate=1
写法2——函数引用
{
	btnPost:'%E7%99%BB%E5%BD%95';
	username:'admin';
	password:'e10adc3949ba59abbe56e057f20f883e';
	savedate:1;
}

修改之后都要按照原本的数据包的格式进行发送


3.密码存储-Web&系统&三方应用

Web网站

zzcms	admin	/123456 	密文利用MD5加密
							MD5(123456)=密文
Dz3.2	admin	/123456		密文利用MD5加密再加密然后连接一个盐
							MD5(MD5(123456).salt)=密文
Dz3.5	admin	/123456		秘钥、偏移量、填充、加密模式															  $2y$10$EUoN.RN.RHgyX2q7PZjyKeAC1JjZmOlzxoim3Vy7aNnnJnGJ4HKC.

PC系统

windows	Aries	/123456		密文利用NTML加密
							32ed87bdb5fdc5e9cba88547376818d4
Linux	kali	/123456		密文利用crypt加密$y$j9T$glYiQhCWNL.Q9sL/M5cXO/$J6qRnOUQXn.6Hv7LzmJjToyraoKBL8wmq52l8a4Y7ND

1.ZZZCMS&Dz
ZZCMS
1.安装环境PHPStudy环境

image-20240312145204507

2.输入真机IP地址访问安装

image-20240312145520824

3.安装完环境正常显示如图

image-20240312145939274

4.下载一个数据库连接工具Navicat Premium打开,新建MySQL数据库

image-20240312154819398

5.打开创建好的zzcms数据库的admin表

image-20240312155043461

6.复制密文密码到cmd5进行解密,发现就是之前配置的密码

image-20240312155347700

7.进入网站后台进行登陆,发现登陆成功

image-20240312155638455

DZ
1.在PHPStudy上搭建Dz网站,注意文件路径,端口,PHP版本

image-20240312175949382

2.进行配置密码之后网站搭建完毕

image-20240312180242709

3.连接到数据库进行数据查询,选取有数据信息的

image-20240312180529897

4.找到含有数据信息的表进行查看

image-20240312180908496

image-20240312181003114

5.将密文复制到解密网站,解出明文密码

Untitled

6.尝试登陆网站管理员用户,登陆成功

image-20240312182738018

Dz3.5
1.在PHPStudy进行网站搭建

image-20240312182350454

2.配置数据库密码和网站管理员密码,记得修改数据库名为其他的,不然和上个版本冲突

image-20240312182518248

3.创建成功后连接数据库进行查询

image-20240312183103934

image-20240312184752907

4.复制密文尝试破解密码

image-20240312184958477


2.Win&Linux
Windows
1.复制mimikatz_trunk到虚拟机中进行解压并打开

image-20240312192731083

2.输入命令对本机密码进行查询
privilege::debug
sekurlsa::logonpasswords

image-20240312193545911

3.解密之后密码是123456,密码对应正确,直接登陆成功

image-20240312195455959

Linux
1.在Linux中查看密码文档

image-20240312200701624


3.MySQL&MsSQL
MySQL
1.在数据库中找到user表对密码进行查询

image-20240312202337179

2.解出数据库明文密码

image-20240312202454598


4.代码混淆-源代码加密&逆向保护

1.PHP&JS混淆加密
PHP
1.编写一个简单的PHP程序

image-20240312205005094

2.对源代码进行加密

image-20240312205322459

3.加密前后对比

image-20240312205443138

JS
1.将加密后的JS代码复制到解密网页进行解密

image-20240312210656985

2.得出明文源代码

image-20240312210722556


2.EXE&JAR代码保护

image-20240312213014020


  • 35
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值