以管理员身份登录系统 分值: 450 以管理员身份登录即可获取通关密码(重置即可,无需登录)

解密关的第一题。

1.题的来源

昨天做了一个网络安全实验室的一个解密关的第一题。
地址:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/index.php
在这里插入图片描述

2题目思考

这个题不能进行登录,自己也试了试没法进行登录,但是可以进行重置密码操作,最开始自己尝试了一下用admin重置密码。结果因为不知道邮箱。第一时间先到是去抓包看看在数据包里面有没有信息,结果查看了半天没有发现。失败!
在这里插入图片描述

然后自己试了试用其他账号重置密码发现可以

在这里插入图片描述在这里插入图片描述
自己尝试了一下这个链接就是重置密码的链接,username自己知道,就是sukey是什么目前还不知道。
然后自己想到:只有自己伪装一个重置密码的链接就可以进行改密码了啊!
现在username我们知道:admin。但是不知道sukey是什么?

然后仔细看了一下sukey的值发现是一个32位的有点像16进制的密码。又看了看题目(解密关)。所以可以肯定题目的关键在解sukey的密

于是自己尝试了一下md5解密
在这里插入图片描述
发现是一串数字??然后在用其他账号试一试?
在这里插入图片描述在这里插入图片描述
发现还是一串数字。而且还特别相似。
然后自己又试一试b账号,发现sukey的值还是在变化,每次发送一次都变化一次?

有经验的朋友可以一下子就想到了这个是一个时间戳进行md5加密的于是我去验证一下
在这里插入图片描述
在这里插入图片描述
后面的时间特别像,而且刚刚操作的时间就是2020/5/27 10:41:13
说明服务器的时间与北京时间相差了8个小时!!!(可以不管)

3.进行解密

现在知道了题目是对sukey的参数进行了时间戳的加密。
于是先写一个脚本。计算当前的时间戳md5值,然后进行发送admin转换修改密码。
通过暴力破解。获得重置密码的链接

脚本:

import hashlib
def md5String(str):#md5加密
    myMd5 = hashlib.md5()#获得一个md5对象
    myMd5.update(str.encode("utf-8"))#获得str字符串
    #在进行md5哈希运算前,需要对数据进行编码,否则报错
    myMd5_Digest = myMd5.hexdigest()#转换成16进制的md5,hashlib.md5.digest()返回是二进制的
    return myMd5_Digest  #md5摘要

if __name__ == '__main__':
    f = open(".\\md5.txt" , "w")
    for i in range(1590548205,1590548205+500,1): #此处写你捕获的时间戳的值
        f.write(md5String(str(i)))
        f.write("\n")
    f.close()
    
#md5.digest()与md5.hexdigest()的区别
# md5 = hashlib.md5('adsf')
# md5.digest() //返回: '\x05\xc1*(s48l\x94\x13\x1a\xb8\xaa\x00\xd0\x8a'    #二进制
# md5.hexdigest() //返回: '05c12a287334386c94131ab8aa00d08a'     #十六进制

抓取重置密码的包在这里插入图片描述
设置sukey为变量,然后导入md5.txt文件进行暴力破解!
在这里插入图片描述
成功!!!
在这里插入图片描述
然后访问:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=aacf5fa1ed08976d4406cf9e8c7938b0&username=admin
在这里插入图片描述在这里插入图片描述

总结:

这道题需要对md5熟悉和时间戳的熟悉。

如果对大家有帮助希望大家多多支持~~~
(下次一定!)

猜你喜欢

转载自blog.csdn.net/qq_46091464/article/details/106374341