码迷,mamicode.com
首页 > Web开发 > 详细

web题

时间:2017-05-06 19:14:38      阅读:309      评论:0      收藏:0      [点我收藏+]

标签: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了

 

web题

标签:substr   md5   while   letters   die   bre   函数   letter   code   

原文地址:http://www.cnblogs.com/test404/p/6817499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!