<?php $flag = $_GET[‘flag‘]; if($flag!=‘15562‘) { if(strstr($flag,‘zctf‘)) { if(substr(md5($flag),8,16)==substr(md5(‘15562‘),8,16)) { die("ok"); } } } die("fuck"); ?> md5(‘15562‘),8,16) 是个0e开头md5 在php里面会当成科学记数法 0exx=0 所以就是找一个字符串 要求不是15662 并且含有zctf的字样 并且md5之后的8-24位也是0e开头 这样0=0然后写脚本开始找
import string import re from hashlib import md5 import random def foo(): t=0 m=0 cset = string.letters+string.digits s=‘zctf‘ while True: m+=1 for i in cset: tmp=s+i x = md5(tmp).hexdigest()[8:24] if re.match(r‘0e\d{14}‘,x): print tmp t=1 break s+=random.choice(cset) print m if t==1: break foo()
关于Md5函数漏洞的题目 再总结一下echo md5(‘QNKCDZO‘)==md5(‘s878926199a‘); 两个等号下会返回1 三个等号的题目就得提交a[]=1&b[]=2了
时间: 2024-11-05 14:55:10