实验吧-MD5之守株待兔

这道题打开链接后

http://ctf5.shiyanbar.com/misc/keys/keys.php

在这里插入图片描述
而刷新一下以后,系统密钥会发生变化,每次刷新这个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)

这个获取三秒后的时间戳是什么操作。。这样一直是对不上的…所以代码简单一点写就是上面那样。

做实验吧的题的时候自己想出思路来好困难…
代码能力还是菜菜菜菜菜菜菜菜
这个脚本还是看完别人的思路自己才写出来的 尴尬

你可能感兴趣的:(CTF)