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一样的文件(找小一点的)
待更新