hash长度扩展攻击
就是针对允许包含额外信息的加密散列函数的攻击手段
允许包含额外信息就是用户可用控制要加密的内容
一般情况是:
知道密钥长度
知道密钥与某字符串拼接后的经过加密的hash值
知道一部分要加密的内容
要加密内容的不知道部分是用户输入的值
用户需要传入一个hash值,用于与加密内容加密后的hash值进行比较
2023xctf分站赛
<?php
highlight_file(__FILE__);
include "./secret_key.php";
include "./salt.php";
//$salt = XXXXXXXXXXXXXX // the salt include 14 characters
//md5($salt."adminroot")=e6ccbf12de9d33ec27a5bcfb6a3293df
@$username = urldecode($_POST["username"]);
@$password = urldecode($_POST["password"]);
if (!empty($_COOKIE["digest"])) {
if ($username === "admin" && $password != "root") {
if ($_COOKIE["digest"] === md5($salt.$username.$password)) {
die ("The secret_key is ". $secret_key);
}
else {
die ("Your cookies don't match up! STOP HACKING THIS SITE.");
}
}
else {
die ("no no no");
}
}
以上源码我们知道盐的长度,需要传入一个digest,然后传入username和password,用于与盐拼接并md5加密,再将得到的hash与传入的digest值比较是否相等
工具:hashpump
# hashpump
Input Signature: e6ccbf12de9d33ec27a5bcfb6a3293df
Input Data: adminroot
Input Key Length: 14
Input Data to Add: abc
标签:hash,传入,攻击,扩展,Input,长度,加密
From: https://www.cnblogs.com/q1stop/p/17903151.html