zoukankan      html  css  js  c++  java
  • CTF PHP代码审计之常见Hash总结

    CTF PHP代码审计之常见Hash总结 -https://www.cnblogs.com/iAmSoScArEd/p/14825040.html 我超怕的

    一、MD4

    1.1

    $a=md4($a)

    解决:

    url?a=0e251288019

    url?a=0e898201062

    url?a=0e001233333333333334557778889

    二、MD5

    2.1

    $a!=$b && md5($a)==md5($b)

    解决

    url?a[]=1&b[]=2

    或ab从以下值中随便选两个:QNKCDZO,240610708,s878926199a,s155964671a,s214587387a,s214587387a,s878926199a,s1091221200a

    2.2

    $a!=$b && md5($a)==md5(md5($b))

    解决

    url?a=QNKCDZO&b=iv2Cn

    若不通过则使用(原因?原因是虽然md5结果都为0e开头,但是后面还区分了都是数字、存在字母的情况,可以手动计算一下md5看看):

    url?a=CbDLytmyGm2xQyaLNhWn&b=7r4lGXCH2Ksu2JNT3BYM

    变量b爆破脚本:

    import string
    import hashlib
    
    payload = string.ascii_letters + string.digits
    
    
    def calc_md5(s):
        md5 = hashlib.md5(s.encode("utf-8")).hexdigest()
        md5_double = hashlib.md5(md5.encode("utf-8")).hexdigest()
        if (md5_double[0:2] == "0e" and md5_double[2:].isdigit()):
            print(s)
    
    
    def getstr(payload, s, slen):
        if (len(s) == slen):
            calc_md5(s)
            return s
    
        for i in payload:
            sl = s + i
            getstr(payload, sl, slen)
    
    
    # 字符串长度从0到30,肯定找得到
    for i in range(3, 30):
        getstr(payload, '', i)

    脚本来自:https://0clickjacking0.github.io/2020/08/24/CTF%E4%B8%AD%E5%85%B3%E4%BA%8Emd5%E7%9A%84%E4%B8%80%E4%BA%9B%E6%80%BB%E7%BB%93/

    2.3

    $_POST(a)!=$_POST(b) && (string)md5($_POST(a))==(string)md5($_POST(b))

    解决:

    POST两个文件不一样,MD5一样的文件(找小一点的)

    待更新

    俗人昭昭,我独昏昏。俗人察察,我独闷闷。
  • 相关阅读:
    SpringBoot之集成slf4j日志框架
    Maven项目优势
    Idea操作技巧
    Nginx服务器之负载均衡策略(6种)
    Git操作规范
    Mybatis之Tk
    MyEclipse取消验证Js的两种方法
    文件异步上传,多文件上传插件uploadify
    EasyMock的使用
    jquery 中post 、get的同步问题,从外部获取返回数据
  • 原文地址:https://www.cnblogs.com/iAmSoScArEd/p/14825040.html
Copyright © 2011-2022 走看看