前言一、爆破 web23
前言
本来是想把做的题目全部写在一篇里的,但是就在昨天晚上发生了十分悲惨的故事,我写的
最后一题,后面的部分被吃掉了……
所以今天再写一篇新的,记录新写下的题目,嘿嘿~
顺便放一下上一篇的链接:
https://blog.csdn.net/qq_45746876/article/details/123045818?spm=1001.2014.3001.5501
一、爆破 web23
这道题就是昨天被吃掉的那道题,先来看题目:
给了一串代码,放到编译器仔细阅读一波并加上注释:
大致意思是get一个值 token,token的md5值满足条件: 第1位 = 第14位 = 第17位,并且取整后 第1位 + 第14位 + 第17位/第1位 === 第17位,此时就会输出flag。
然后再写一个python脚本爆破一下,这题写了很久的原因就是我想直接用在phpstorm上面把token爆破出来,但是php水平又很差,于是想了很久……
后来发现python好像也可以完成,然后又写了python脚本爆破:
# date:2022-2-24 23:25 # author:marxycj from hashlib import md5 import string alllist = '0123456789' + string.ascii_lowercase + string.ascii_uppercase token_md5 = md5(alllist.encode("utf-8")).hexdigest() for a in alllist: for b in alllist: token = str(a) + str(b) token_md5 = md5(token.encode("utf-8")).hexdigest() if token_md5[1] == token_md5[14] and token_md5[14] == token_md5[17]: # if int(token_md5[1]) + int(token_md5[14]) + int(token_md5[17]) / int(token_md5[1]) == int(token_md5[31]): # 是照着条件写出来的,但是有问题,为了不耽误睡觉,就没有改着一行 print('token:{}'.format(token)) print('token+md5:{}'.format(token_md5))但是由于有一个限制条件没有写出来,所以跑出来有几个结果:
然后再一个一个试(爆破又爆破),最后得到 ?token=3j 是正确的,得出flag。



