2024小迪安全基础入门第十一课

ops/2024/12/12 5:18:06/

目录

一、算法识别加解密-MD5&AES&DES&RSA

#算法加密-概念&分类&类型

二、 解密条件-有源码找逻辑&无源码JS逆向

#加密解密-识别特征&解密条件

#密码存储


一、算法识别加解密-MD5&AES&DES&RSA

安全测试中:

密文-有源码直接看源码分析算法(后端必须要有源码才能彻底知道)

密文-没有源码1、猜识别 2、看前端JS(加密逻辑是不是在前端)

#算法加密-概念&分类&类型

  1. 单向散列加密 -MD5

单向散列加密算法的优点有(以MD5为例):

方便存储,损耗低:加密/加密对于性能的损耗微乎其微。

单向散列加密的缺点就是存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解的。

常见的单向散列加密算法有:

MD5 SHA MAC CRC

*解密条件:密文即可,采用碰撞解密,几率看明文复杂程度

  1. 对称加密 -AES

对称加密优点是算法公开、计算量小、加密速度快、加密效率高。

缺点是发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。

常见的对称加密算法有:

DES AES RC4

*解密条件:密文及密钥偏移量,采用逆向算法解密,条件成立即可解密成功

  1. 非对称加密 -RSA

非对称加密的优点是与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。

缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

常见的非对称加密算法:

RSA RSA2 PKCS

*解密条件:密文和公钥或私钥,采用逆向算法解密,条件成立即可解密成功

二、 解密条件-有源码找逻辑&无源码JS逆向

#加密解密-识别特征&解密条件

MD5密文特点:

1、由数字“0-9”和字母“a-f”所组成的字符串

2、固定的位数 16 和 32位

解密需求:密文即可,但复杂明文可能解不出

BASE64编码特点:

0、大小写区分,通过数字和字母的组合

1、一般情况下密文尾部都会有两个等号,明文很少的时候则没有

2、明文越长密文越长,一般不会出现"/""+"在密文中

AES、DES密文特点:

同BASE64基本类似,但一般会出现"/"和"+"在密文中

解密需求:密文,模式,加密Key,偏移量,条件满足才可解出

RSA密文特点:

特征同AES,DES相似,但是长度较长

解密需求:密文,公钥或私钥即可解出

其他密文特点见:

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

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

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

CTF中常见密码题解密网站总结_ctf解密网站-CSDN博客

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

CTF密码学常见加密解密总结_wydfxjmgvswodododod-CSDN博客

#密码存储

1、密码存储(后端处理)

X3.2-md5&salt

DZ对应代码段-/uc_server/model/user.php

function add_user() {$password = md5(md5($password).$salt);}<?PHP
$h = 'd7192407bb4bfc83d28f374b6812fbcd';
$hash=md5(md5('123456').'3946d5');
if($h==$hash){echo 'ok';
}else{echo 'no';
}
?>
​
​
<?php
function reverse_md5_hash_with_salt($final_hash, $salt, $dictionary_file) {// 打开字典文件$file = fopen($dictionary_file, "r");if (!$file) {die("无法打开字典文件!");}
​// 遍历字典文件中的每一行(即每一个密码)while (($password = fgets($file)) !== false) {// 去除密码两侧的空白字符(包括换行符)$password = trim($password);
​// 第一次 MD5 加密密码$md5_hash = md5($password);
​// 拼接 md5($password) 和 salt$salted_hash = $md5_hash . $salt;
​// 第二次 MD5 加密$final_attempt = md5($salted_hash);
​// 检查是否匹配if ($final_attempt === $final_hash) {fclose($file);return $password;  // 找到匹配的密码}}
​// 如果没有找到匹配的密码fclose($file);return null;
}
​
// 给定的目标加密值和盐值
$final_hash = "125648dbf16531ab7e6b2f8ec8003ea7";  // 目标 MD5 值
$salt = "3e3790";  // 盐值
​
// 字典文件路径
$dictionary_file = "weaksauce.txt";  // 字典文件路径
​
// 调用函数进行密码破解
$password = reverse_md5_hash_with_salt($final_hash, $salt, $dictionary_file);
​
// 输出结果
if ($password) {echo "破解成功,密码是: $password";
} else {echo "密码破解失败";
}
?>
​

X3.5-hash

DZ对应代码段-/uc_server/model/user.php

function add_user() {$salt = '';$password = $this->generate_password($password);}
​function generate_password($password) {$algo = $this->get_passwordalgo();$options = $this->get_passwordoptions();$hash = password_hash($password, $algo, $options);}
​
<?PHP
$hash = '$2y$10$KA.7VYVheqod8F3X65tWjO3ZXfozNA2fC4oIZoDSu/TbfgKmiw7xO';
if (password_verify('123456', $hash)) {echo 'ok';
} else {echo 'error';
}
?>
​
​
<?PHP
$hash = '$2y$10$PDACNCRyZzcsknF8zvL4yu7YHIPQTN8F635PxQeXSB8QxxDZSXrd.';
​
​
$dictionary_file = "weaksauce.txt";
$file = fopen($dictionary_file, "r");if (!$file) {die("无法打开字典文件!");}
​// 遍历字典文件中的每一行(即每一个密码)while (($password = fgets($file)) !== false) {// 去除密码两侧的空白字符(包括换行符)$password = trim($password);echo $password."<br>";if (password_verify($password, $hash)) {echo 'ok';} else {echo 'error';} }
?>
​

2、数据通讯

-博客登录-zblog(前端处理)

<script src="script/md5.js" type="text/javascript"></script>
$("#btnPost").click(function(){var strPassWord=$("#edtPassWord").val();$("form").attr("action","cmd.php?act=verify");$("#password").val(MD5(strPassWord));
console.log(MD5("123456"));
​

-博客登录-混合加密(前端处理)

<script src="/Scripts/Vip/Login.js?v=20241202154949"></script>
function Login() {logindata.UserName = encodeURI(encrypt.encrypt(numMobile));logindata.Mobile = encodeURI(encrypt.encrypt(numMobile));;logindata.Password = encodeURI(encrypt.encrypt(numPassword));
}
var encrypt = new JSEncrypt();
encodeURI(encrypt.encrypt('13554365566'));
​

3、密文

明确以下三种加密算法加解密条件

对称AES/DES加解密,非对称RSA加解密

解密:在线DES加密解密、DES在线加密解密、DES encryption and decryption--查错网

应用场景:

1、发送数据的时候自动将数据加密发送(自需加密即可)

安全测试思路:我们需要将我们的Payload也要加密发送过去,这样才符合正常的业务逻辑,所以我们就只需要调用应用的JS加密逻辑进行提交发送测试即可!

2、比如要得到数据的明文(必须要拿到解密算法)

由于各种算法的解密条件不一,密钥,偏移量,私钥等不一定能拿到。


http://www.ppmy.cn/ops/141166.html

相关文章

ARM学习(36)静态扫描规则学习以及工具使用

笔者来学习了解一下静态扫描以及其规则&#xff0c;并且亲身是实践一下对arm 架构的代码进行扫描。 1、静态扫描认识 静态扫描&#xff1a;对代码源文件按照一定的规则进行扫描&#xff0c;来发现一些潜在的问题或者风险&#xff0c;因为不涉及代码运行&#xff0c;所以其一般…

网管平台(基础篇):路由器的介绍与管理

路由器简介 路由器&#xff08;Router&#xff09;是一种计算机网络设备&#xff0c;它的主要作用是将数据通过打包&#xff0c;并按照一定的路径选择算法&#xff0c;将网络传送至目的地。路由器能够连接两个或更多个网络&#xff0c;并根据信道的情况自动选择和设定路由&…

Kafka集群创建

上次集群忘了写文档&#xff0c;这次集群创建zk和kafka放在了一起&#xff0c;版本和生产一致&#xff0c;所以使用低版本 2.8.6 一、准备配置 1.1、配置env $ cat /etc/profile.d/kafka.sh # Java Environment export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64 export P…

利用PHP和GD库实现图片拼接的方法

利用PHP和GD库实现图片拼接的方法主要涉及到加载图片资源、创建目标画布、将图片资源绘制到目标画布上&#xff0c;并最终输出或保存拼接后的图片。以下是实现图片拼接的基本步骤&#xff1a; 加载图片资源&#xff1a; 使用imagecreatefromjpeg()、imagecreatefrompng()或ima…

day08 接口测试(4)知识点完结!!

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 1、postman读取外部数据文件&#xff08;参数化&#xff09; 1.1 数据文件简介 1.2 导入外部数据文件 1.2.1 csv文件 1.2.2 导入 json文件 1.3 读取数据文件数据 1.4 案例 1.5 生成测试报告 2、小…

selenium学习:等待方式

隐式等待 1.针对查找元素设置最大的超时时间 2.可以全局性的设置 3.不满足时&#xff0c;提示no such element driver.implicitly_wait(5) #对查找元素最大的超时时间&#xff0c;如果超过最大等待时间后&#xff0c;没有找到元素&#xff0c;则会报错&#xff1a;no such #e…

黑马点评项目笔记

代码仓库&#xff1a;https://gitcode.com/xu1feng/hm-dianpnig/overview&#xff0c;欢迎star~ 整体功能架构图 短信登录 导入黑马点评项目 首先&#xff0c;导入数据库SQL文件hmdp.sql。 其中的表有&#xff1a; tb_user&#xff1a;用户表tb_user_info&#xff1a;用户…

L22.【LeetCode笔记】相交链表(新版)

目录 1.题目 代码模板 2.分析 ​编辑 算法误区 正确方法1 但不能通过所有的测试用例 修改后 提交结果 正确方法2 节省代码的技巧 1.题目 https://leetcode.cn/problems/3u1WK4/description/ 给定两个单链表的头节点 headA 和 headB &#xff0c;请找出并返回两个单…