Community编程与开发github.com

yaklang/哈希攻击技术

哈希攻击手册。适用于利用长度扩展攻击、MD5/SHA1碰撞、HMAC时序泄露、生日攻击或基于哈希的工作量证明的CTF及授权测试场景。

哈希攻击技术 是什么?

该技能提供了一个全面的哈希攻击技术手册,专门针对安全研究人员和渗透测试人员在CTF竞赛或授权安全测试中的需求。它涵盖了多种经典哈希攻击方法,包括长度扩展攻击、MD5/SHA1碰撞攻击、HMAC时序泄露攻击、生日攻击以及哈希型工作量证明的破解。技能文档详细描述了每种攻击的原理、适用条件、攻击步骤以及相关的代码实现(如使用Python或Yaklang脚本),并强调了在合法授权范围内使用。该技能支持Yaklang生态工具链,能够与Yak Runner等平台无缝集成,帮助用户快速评估目标系统的哈希算法安全性,并执行高效的攻击向量。通过此技能,开发者可以深入理解哈希算法的弱点,并在受控环境中实践攻防技术。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yaklang/hack-skills/tree/main/skills/hash-attack-techniques

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

哈希攻击技术 是做什么的?

哈希攻击手册。适用于利用长度扩展攻击、MD5/SHA1碰撞、HMAC时序泄露、生日攻击或基于哈希的工作量证明的CTF及授权测试场景。

目录

长度扩展攻击

原理:对基于Merkle-Damgård结构的哈希函数(如MD5、SHA1、SHA256)进行攻击,通过已知H(secret || message)和len(secret),构造出H(secret || message || padding || additional_data)。

适用条件:

  • 哈希算法使用Merkle-Damgård结构
  • 已知H(secret || message)的值
  • 知道secret的长度(精确或可枚举)

攻击步骤:

  1. 使用hashpumpy或yak内置函数进行长度扩展
  2. 构造新数据包并提交

示例代码

import hashpumpy

original_hash = "..."  # 原始哈希值
secret_len = 10         # 推测的密钥长度
original_message = b"data"
extra_message = b"&admin=true"

new_hash, new_message = hashpumpy.hashpumpy(
    original_hash,
    original_message,
    extra_message,
    secret_len
)

MD5/SHA1碰撞攻击

原理:利用已知的碰撞攻击技术(如fastcoll、unicoll、SHA1-SHAttered)生成两个具有相同哈希值的不同消息。

适用场景:

  • 数字证书伪造
  • 文件完整性绕过
  • 哈希签名认证绕过

示例命令

# 使用fastcoll生成MD5碰撞对
./fastcoll -o file1 file2

# 使用SHAttered技术生成SHA1碰撞
python sha1_collider.py --prefix prefix.bin

HMAC时序泄露攻击

原理:通过测量HMAC验证的时间差异,逐字节或逐比特恢复HMAC密钥。

攻击条件:

  • 目标系统暴露了可测量的时序差异
  • 可以使用大量请求进行统计

时序攻击代码片段

import time
import requests

def time_hmac_validation(guess):
    start = time.perf_counter()
    response = requests.post(url, data={"hmac": guess})
    # 注:实际攻击需要更精确的统计
    return time.perf_counter() - start

生日攻击

原理:利用生日悖论寻找哈希碰撞,适用于寻找n位哈希的碰撞,时间复杂度约为O(2^(n/2))。

应用场景:

  • PDF碰撞签名绕过
  • 哈希表拒绝服务攻击
  • 数字签名伪造

生日快乐攻击脚本

import hashlib
import random

def birthday_attack(target_hash_len=32):
    # 生成随机字符串并哈希,寻找碰撞
    seen = {}
    while True:
        rand_str = str(random.getrandbits(128))
        h = hashlib.sha256(rand_str.encode()).hexdigest()[:target_hash_len]
        if h in seen:
            return seen[h], rand_str
        seen[h] = rand_str

哈希型工作量证明破解

原理:对PoW挑战中使用的哈希函数进行暴力破解,寻找满足H(data || nonce) < target的随机数。

加速技术:

  • 使用GPU/FPGA并行计算
  • 预计算哈希前缀
  • 利用硬件加速指令

Yaklang实现示例

poSolve = func(target, hashPrefix) {
    // 暴力搜索nonce
    i = 0
    for {
        data = hashPrefix + i
        h = sha256(data)
        if str(h).hex() < target {
            return data
        }
        i++
    }
}

免责声明

这些技术仅供教育和授权安全测试使用。未经明确授权使用这些攻击技术是违法的。使用者需自行承担所有法律和伦理责任。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

yaklang/401-403-bypass-techniques

401/403 bypass playbook. Use when encountering access-denied responses on admin panels, API endpoints, or restricted paths. Covers path manipulation, HTTP method tampering, header injection, protocol downgrade, and automated bypass tools.

yaklang/active-directory-acl-abuse

Active Directory ACL abuse playbook. Use when exploiting misconfigured AD permissions including GenericAll, WriteDACL, DCSync rights, shadow credentials, LAPS reading, GPO abuse, and BloodHound-guided attack paths.

yaklang/active-directory-certificate-services

AD Certificate Services attack playbook. Use when targeting misconfigured AD CS for privilege escalation via ESC1-ESC13 template abuse, NTLM relay to enrollment, CA officer abuse, and certificate-based persistence.

yaklang/active-directory-kerberos-attacks

Kerberos attack playbook for Active Directory. Use when targeting AD authentication via AS-REP roasting, Kerberoasting, golden/silver/diamond tickets, delegation abuse, or pass-the-ticket attacks.

yaklang/ai-ml-security

AI/ML security playbook. Use when assessing model supply chain attacks (pickle RCE, poisoned weights), adversarial examples, model poisoning, model stealing, data privacy attacks (membership inference, model inversion), and autonomous agent security risks.

yaklang/android-pentesting-tricks

Android pentesting playbook. Use when testing Android applications for SSL pinning bypass, exported component abuse, WebView vulnerabilities, intent redirection, root detection bypass, tapjacking, and backup extraction during authorized mobile security assessments.

yaklang/anti-debugging-techniques

Anti-debugging detection and bypass playbook. Use when reversing protected binaries that detect debuggers via ptrace, PEB flags, timing checks, or signal/exception handlers on Linux and Windows.

yaklang/api-auth-and-jwt-abuse

API authentication and JWT abuse playbook. Use when testing bearer tokens, API keys, claim trust, header spoofing, rate limits, and API auth boundary weaknesses.

yaklang/api-authorization-and-bola

API authorization and BOLA testing playbook. Use when APIs expose object identifiers, nested resources, hidden writable fields, or weak function-level authorization.

yaklang/api-recon-and-docs

API reconnaissance and documentation review playbook. Use when discovering endpoints, schemas, versions, OpenAPI specs, hidden docs, and surface area for API testing.

yaklang/api-sec

Entry P1 category router for API security. Use when choosing between API recon, authorization, token abuse, and hidden-parameter workflows before any deeper API topic skill.

yaklang/arbitrary-write-to-rce

Arbitrary write to RCE playbook. Use when you have an arbitrary write primitive (from heap exploitation, format string, or OOB write) and need to convert it into code execution by targeting GOT, hooks, _IO_FILE vtable, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array, or C++ vtables.

yaklang/authbypass-authentication-flaws

Authentication bypass testing playbook. Use when assessing login flows, password reset logic, account recovery, MFA bypass, token predictability, brute-force resistance, and session boundary flaws.

yaklang/auth-sec

Entry P1 category router for authentication and authorization. Use when testing login flows, sessions, object authorization, JWT, OAuth, CORS, CSRF, and enterprise SSO weaknesses before any deeper auth topic skill.

yaklang/binary-protection-bypass

Binary protection bypass playbook. Use when identifying and bypassing ASLR, PIE, NX/DEP, stack canary, RELRO, FORTIFY_SOURCE, CET, and MTE protections in ELF binaries to enable exploitation.

yaklang/browser-exploitation-v8

Browser and V8 exploitation playbook. Use when exploiting JavaScript engine vulnerabilities including JIT type confusion, incorrect bounds elimination, and V8 sandbox bypass to achieve renderer RCE and sandbox escape in Chrome/Chromium.

yaklang/business-logic-vuln

Entry P1 category router for business logic testing. Use when workflow abuse, race conditions, pricing flaws, or multi-step state attacks matter more than parser-level input injection.

yaklang/business-logic-vulnerabilities

Business logic vulnerability playbook. Use when reasoning about workflows, race conditions, price manipulation, coupon abuse, state machines, and multi-step authorization gaps.

yaklang/classical-cipher-analysis

Classical cipher analysis playbook. Use when encountering substitution ciphers, Vigenere, transposition, XOR, or encoded text in CTF challenges that requires frequency analysis, Kasiski examination, or known-plaintext cryptanalysis.

yaklang/clickjacking

Clickjacking playbook. Use when testing whether target pages can be framed, whether X-Frame-Options or CSP frame-ancestors are properly configured, and whether UI redress attacks can trigger sensitive actions.

相关技能