这道题打开链接后
而刷新一下以后,系统密钥会发生变化,每次刷新这个md5解码后的数字都会变大,猜测和时间有关,根据题目描述,这道题只要当自己的密钥和系统的密钥匹配上就可以得到flag。
一种方法是刷新一下页面,快速复制系统密钥然后解密把解密到的数字返回到url上,把数字改稍微大点,刷新,当系统密钥刚好和和你改的这个数字相同的时候,就可以获得一个alert()弹框,里面就是flag。
还有就是自动化的写一个python脚本,通过python的 time模块可以获得当前系统的时间,而使用requests模块可以请求网站,代码如下
import time
import requests
# 引入Time库和requests库,前者用于获取时间戳,后者用于提交请求
def getTime():
return str(int(time.time()))
# 这里返回当前时间,要格式化成字符串
def getFlag(timestamp):
url = 'http://ctf5.shiyanbar.com/misc/keys/keys.php?key='+timestamp
# 拼接成字符串
r = requests.get(url)
# 对这个url进行请求
s = str(r.content)
if "false" in s:
print('no')
# 怕代码写错,就随手打印了一下,无视就好
else:
print(r.content)
for i in range(10):
getFlag(getTime())
# 把当前的时间戳当作参数放到getFlag()函数中,拼接成字符串进行请求,
# range()里数字一般10就可以跑出来
在网上看的好多代码都是引入了hashlib库,然后写了一个md5的函数,其实用不到的,这里只要时间戳匹配上就可以。还有getTime()中
return str(int(time.time())+3)
这个获取三秒后的时间戳是什么操作。。这样一直是对不上的…所以代码简单一点写就是上面那样。
做实验吧的题的时候自己想出思路来好困难…
代码能力还是菜菜菜菜菜菜菜菜
这个脚本还是看完别人的思路自己才写出来的 尴尬