标签:substr md5 while letters die bre 函数 letter code
<?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了
标签:substr md5 while letters die bre 函数 letter code
原文地址:http://www.cnblogs.com/test404/p/6817499.html