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一樣的文件(找小一點的)

 

待更新

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM