ctf.show-CTF部分-SafePassword
这道题目考的是弱比较和PHP的异常处理
![image]()
其中前者的值是完全可控的, 但是第二个值不是:
![image]()
会发现我们不知道变量$secret_salt的值, 所以解法就是不进入IF分支语句
当$channelKey的值长度大于64的时候, 进入ELSE分支语句, 经过层层throw, catch, 最后$channelKey的值会变为2025
最后, 我们只需要构造一个MD5值能够弱等于2025的$accessKey值就行了,下面是爆破脚本
import hashlib,random,string
def get_md5(target="2025"):
while True:
tmp = "".join(random.choices(string.ascii_letters+string.digits,k=20))
#从字母数字组成的集合中随机挑选出20为字符
tmp_md5 = hashlib.md5( tmp.encode() ).hexdigest()
#把随机字符转为字节, 然后计算MD5值,最后返回16进制的格式
if tmp_md5.startswith(target) and tmp_md5[ len(target) ] in "abcdef":
#如果哈希值的开头是2025并且2025的后面一位字符是字母的话, 那就说明找到了
print(f"[+]{tmp};{tmp_md5}")
print("-----------------------------")
get_md5()
posted on 2026-01-04 10:46 misaki%20mei 阅读(4) 评论(0) 收藏 举报


浙公网安备 33010602011771号