赞
踩
最后跑出来六个答案一个一个尝试得到答案为3j
- import hashlib
-
- m = "0123456789qwertyuiopasdfghjklzxcvbnm"
- # 这串英文就是24个英文字母
- for i in m:
- for a in m:
- md5 = hashlib.md5()
- # 构造一个hashlib对象
- str_1 = str(i) + str(a)
- # 构造payload
- md5.update(str_1.encode('utf-8'))
- # 指定位utf-8加密方式
- b = md5.hexdigest()
- # MD5加密
- if b[1:2] == b[14:15] and b[14:15] == b[17:18]:
- print(str_1)
- # 输出答案

这一题很像是版本漏洞,通过看提示从php4.2.0开始就不用mt_scrand(seed)来播种,会自动播种,如果设置了mt_scrand(seed)并且seed有值,那就会生成伪随机数(俗称假的随机数),生成的数字就会固定。
这里有和24题一样的漏洞,使用了mt_srand()播种就会生成特定的随机值,这里我们需要传入同样的随机值让rand的变量为零才能进入if
虽然说使用mt_rand()会生成特定的数,但是每次的使用会不一样
例如:第一次使用mt_rand()会生成123456但第二次使用mt_rand()会生成456789,但是无论刷新多少次他们都不会变
这里还需要我们传入cookie里的token值需要弱等于两个随机值相加(每一次使用,mt_rand()生成的都会不一样,本来我还想直接bp抓包爆破来着,但是显然不可行)
####这里使用工具怎么跑出来的不清楚原理,有些许复杂
这里跑出来的是mt_srand('种子')的种子,把他拿到php在线执行中去跑,直到第一次使用mt_rand()等于784681645(每个人都不一样)
例如这样:
首先呢,他会验证这中间部分是否日期,如果长度或者大小都不正确的话,会直接弹窗且不发包,这里我直接用bp爆破模式添加了三个放payload的位置
这里是三个payload
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。