Hackinglab(鹰眼)——解密关

2023-11-19

目录

1、以管理员身份登录系统

2、邂逅对门的妹纸

3、万恶的Cisco

4、万恶的加密

5、喜欢泡网吧的小明

6、异常数据

7、md5真的能碰撞嘛?

8、小明爱上了一个搞硬件的小姑凉

9、有签名限制的读取任意文件

10、美丽的邂逅与密码器的开门密码


1、以管理员身份登录系统

  • 根据题目提示,我们需要重置管理员的登录密码。已知其他用户可以获得重置密码的链接,那么先尝试获得链接。
  • 点击忘记密码来到重置密码界面。
  • 使用BurpSuite进行拦截,具体步骤:
    • 打开BurpSuite,打开浏览器代理(与BurpSuite设置的一致),输入www(普通用户)点击重置密码,BurpSuite成功抓包。右键将包发送给重发器。
    • 打开重发器,点击发送,获得重置密码的链接:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=7ad3dac44e0ff4234a8e6fce09aa5e04&username=www
    • 访问该链接,密码重置成功。
    •  将用户名改为管理员admin重新发送,也确实不能获得重置密码的链接。
    • 再次修改为www(普通用户)发送,发现这一次获得的链接中的sukey与上次的不同。
    • 重新发送几次,发现每次的sukey都不一样。既然是解密关,那么应该要弄清楚这段字符代表什么含义。
  • 观察该字符串都是数字和字母,猜测是md5加密,尝试使用md5进行解密。 解密工具:MD5免费在线解密破解_MD5在线加密-SOMD5
  • 转换后的字符串着实弄不清楚,查询后知道是时间戳。时间戳转换工具:优易工具 - Unix时间戳(Unix timestamp)转换工具 (usey.cn)
    • 【注】Unix时间戳表示从1970年1月1日00:00:00 UTC(协调世界时)以来经过的秒数。
  • 转换后的时间和响应中的时间并不完全一样。这是因为GMT(格林尼治平时)与北京时间相差8小时,北京时间比GMT快8小时。
  • 既然知道这段字符串是什么含义,那我们就可以伪造重置密码的链接了。
  • 将用户名改为管理员admin重新发送,获得响应的时间。
  • 利用工具将时间转换为时间戳。(记得要加上8个小时) 时间戳转换工具:优易工具 - Unix时间戳(Unix timestamp)转换工具 (usey.cn)
  • 在对时间戳进行md5加密。md5加密工具:MD5 加密 | 菜鸟工具 (runoob.com)
  • 伪造重置密码链接为:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=824c365b68df48b3d32b9ad42c2b502c&username=admin,访问该链接,获得key。

2、邂逅对门的妹纸

  • 点击链接,下载了一个网络数据包。
  • 根据题目提示,猜测密码是她的出生年月日。2014年上大三,猜测她可能是1993、1994、1995、1996年出生。
  • 使用字典生成工具(网上有很多),生成密码字典。
  •  将下载的wifi-crack.cap数据包和生成的birthday.txt密码字典放入kali linux系统,使用aircrack-ng进行爆破。
    • 【注】aircrack-ng是一款著名的WiFi破解工具,用于破解WPA/WPA2保护的WiFi网络。它的工作原理是:
      • 使用airodump-ng捕获Wifi数据包,获取网络名称(SSID)、BSSID、密码(PSK)等信息。
      • 使用aircrack-ng利用密码字典或密码生成规则进行暴力破解。
  • 具体操作:
    • 将数据包和密码字典拷贝到kail中,并在当前位置打开终端。
    • 输入aircrack-ng -w birthday.txt wifi-crack.cap进行爆破。
      • 【注】-w:指定密码字典文件。
    • 爆破成功,找到密码。
    • 根据题目提示,我们需要把密码进行md5 32位小写加密,即获得key。

3、万恶的Cisco

  • 根据题目提示,我们需要破解cisco(思科)交换机的配置文件中的密码。
  • 网上找一个在线cisco密码破解工具进行破解。
  • cisco密码破解工具:IFM - Cisco Password Cracker

4、万恶的加密

  • 根据题目提示,需要破解华为交换机的密码。
  • 百度可知,华为/华三交换机密码的加密方式为DES,所以需要找到DES的解密方式。网上找的DES在线解密工具都需要添加密钥,而我们并不知道密钥。
  • 网上找到一个python解密DES的脚本,运行发现有很多报错,应该是我在win下安装的是python3,该脚本的语法是python2。不想安装过python,直接在kail虚拟机中运行。
  • # coding=utf-8
    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
        i = 0
        j = 0
    
        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")
    
    if __name__ == '__main__':
        miwen = "aK9Q4I)J'#[Q=^Q`MAF4<1!!" // 需要破解的密码
        print u'明文' + decrypt_password(miwen)
  • 首先要安装脚本中引入的包,结果发现kail中的python2没有pip,无法下载模块。解决办法:kali linux 中python2不带pip的解决方法 - kalibb - 博客园 (cnblogs.com)
  • 安装Crypto包时报错,原因是其已经没有被维护了。解决办法:pip安装失败解决以及crypto库安装注意点 - 渐逝的星光 - 博客园 (cnblogs.com)(要加上镜像,不然也会安装失败)
  • 运行脚本,获得明文,即为key。

5、喜欢泡网吧的小明

  • 打开靶场。
  • 下载dump文件,得到netbarcard.dump。
    • 【注】dump文件是操作系统生成的一种二进制文件,包含了程序或系统的内存转储数据。
  • 将netbarcard.dump上传到刷卡机,发现文件损坏了。
  • 使用Winhex打开netbarcard.dump。大概浏览一遍,发现只有前面几句有用,后面都是重复的。
  • 根据提示,文件中有一个字节(也就是2位十六进制)的数据发生了改变,这才导致了刷卡机无法读取文件,猜测是文件头损坏了。通过查询,知道ic卡使用刷卡器读出的dump文件的结构。
  • 先看看校验位有没有问题,校验位为第5个字节,计算AA⊕3E⊕BA⊕A4=94⊕1E=8A。(卡号异或)计算工具:位运算(按位与,或,异或)在线计算器 (23bei.com)
  • 计算的校验位8A与原校验位AA不同,修改原校验位。
  • 将修改后的dump文件重新上传,刷卡成功,显示余额100元。
  • 按照题目要求,接下来需要将余额充值到200元。根据dump文件的结构,得知其数据部分如下图。
  • 一般的ic卡喜欢将金额乘以一定数之后转为16进制,明文存储。然后这个数值常常是10或100。计算发现10000的16进制为2710(刚好是以小端方式存储的1027)。

  • 20000的16进制为4E20,修改对应数值。(注意是小端存储)

  • 重新上传文件,获得key。

6、异常数据

  •  第一眼看到该序列就知道是base64编码,但是直接解不出来。根据题目提示和观察序列(都是大写),应该是该序列某些位的字母小写变成了大写。
  • 编写脚本,使用递归列举出所有小写字母转变为大写之前的结果。
  • from base64 import *
    import re # 正则表达式模块
    
    def dfs(res, arr, pos): # 递归函数
        # ''.join(arr):将列表转换为字符串
        res.append(''.join(arr)) # append():将字符串加入列表中
        i = pos
        for i in range(i, 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)
    # b64decode是base64模块提供的解码函数,返回值为bytes类型
    res_decode = map(b64decode, res) # map():将b64decode函数作用在res的每个元素上
    
    for i in res_decode:
        # re.findall():匹配正则表达式
        # repr():将bytes类型转换为字符串
        if re.findall(r'\\x', repr(i)):  # 匹配\x,\x为十六进制转义字符,存在\x说明该字符不是能打印的二进制位
            continue
        else:
            print(i)
    
  • 递归理解图:
  • 运行脚本,得到key。

7、md5真的能碰撞嘛?

  •  打开靶场。
  • 点击链接,获得php代码。
  • 阅读php代码发现,提交的password不等于rootadmin,但password的MD5加密值等于rootadmin的MD5加密值时,可获得flag。
  • 根据MD5加密的特性,目前尚未发现与MD5计算出的任意摘要值相同的两段信息,所以我们不能找到一个password与rootadmin不同,且经MD5加密后与rootadmin的MD5加密值相同。
  • !1793422703! 经过MD5加密后为:0e332932043729729062996282883873
  • 根据php弱比较,PHP中的==双等号比较会把字符串转换成数字,而以0e开头的哈希值字符串,PHP会误认为是科学计数法表示的0。
  • 所以需要找一个经过MD5加密后是以0e开头的password。
  • 百度:以0e开头的MD5字典。
  • 随便选一个,用HackBar提交post请求,获得flag。(要在首页提交post)

8、小明爱上了一个搞硬件的小姑凉

  •  下载文件,使用Winhex打开,查看发现一个什么分析仪。
  • 搜索SaleaeAsyncSerialAnalyzer并下载,下载后发现打不开文件。原因是要使用第一个版本打开,我下的是第二个版本。
  • 重新下载第一个版本,下载地址:https://downloads.saleae.com/logic/1.2.40/Logic-1.2.40-Windows.zip
  • 打开文件后,一直往左拉,看到一些十六进制字符。
  • 重新设置软件,将显示设置为ASCII。
  • 根据题目提示,只要内容的小写,得到key为:iloveyouxiaoguniang,错误。
  • 加上感叹号,iloveyouxiaoguniang!,还是错误。
  • 发现中间有个大写单词,查询发现是逗号。
  • 重新提交key为:iloveyou,xiaoguniang!,正确。

9、有签名限制的读取任意文件

  • 打开靶场,F12查看网络响应,可看到隐藏的php代码。
  • <!--<?php
    header("Content-type:text/html;charset=utf-8");
    include "_flag.php";
    include "salt.php";
    
    $mysalt=SALT;
    
    if(isset($_GET['filepath'])&&!empty($_GET['filepath']) &&isset($_GET['sign']) &&!empty($_GET['sign'])){
    	myreadfile($_GET['filepath'],$mysalt,$_GET['sign']);
    }
    else{
    	//降低一点复杂度
    	var_dump(strlen($mysalt));
    	testsign("/etc/hosts",$mysalt);
    }
    
    function myhash($message,$mysalt){
    		return md5($mysalt.$message);
    }
    function checksign($message,$mysalt,$sign){
        if($sign==myhash($message,$mysalt)){
        	return True;
        }else{
        	return False;
        }
    }
    function myreadfile($filepath,$mysalt,$sign){
    	$res=checksign($filepath,$mysalt,$sign);
        if($res){
        	echo getfile($filepath);
        }
        else{
        	echo 'sign error!';
        }
    }
    function testsign($filepath,$mysalt){
    	echo myhash($filepath,$mysalt);
    }
    
    echo "<!--".file_get_contents(__FILE__);
  • 简单阅读php代码,再根据提示,知道密文长度为32和使用MD5长度扩展攻击(Length Extension Attack)。使用hash_extender工具,在kail中安装。
  • 【注】哈希长度扩展攻击:
  • 打开终端,输入:
    • git clone https://github.com/iagox86/hash_extender
    • sudo apt-get install g++ libssl-dev
    • cd hash_extender
    • make
    • 【注】输入make后提示失败。打开文件系统/root/hash_extender/Makefile,删除-Werror,输入:wq保存。再重新make即可成功。
    •  
  • 输入:./hash_extender -f md5 -l 32 -d '/etc/hosts' -s 'f3d366138601b5afefbd4fc15731692e' -a '' --out-data-format=html
    • -d:原始数据
    • -f:代表加密方式
    • -l:key的长度
    • -s:原始的hash值
    • -a:添加的值
    • –out-data-format:输出的格式
  • 组织payload: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
  • 成功获得flag。

10、美丽的邂逅与密码器的开门密码

  •  下载二进制文件并运行,需要输入密码。
  • 使用IDA打开该exe文件,找到main函数,按F5生成伪代码。
  • 大致查看伪代码,输入的密码会被调入执行sub_401005()函数。如果该函数返回的是1,即可输出一些东西。
  • 查看sub_401005()函数。
  • 该函数内部,密码又被调入执行了sub_401020()函数,查看该函数。
  • 只要密码的长度大于50,即可返回1。
  • 随意输入长度大于50的密码,获得key。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hackinglab(鹰眼)——解密关 的相关文章

  • Golang语言记录

    编译成Linux可执行文件 先设置环境 SET GOARCH amd64 SET GOOS linux SET CGO ENABLED 0 然后运行 go build o 编译成的文件名 Golang的格式化输出 定义示例类型和变量 typ
  • GD32F310 (二) 按键轮询输入

    目录 首言 一 按键输入初始化 二 按键main 应用 首言 作者 小飞虫科技 淘宝 首页 小虫飞科技 淘宝网 taobao com 开发板 GD32F3X0系列 一 按键输入初始化 void KEY Init void enable th
  • 【华为OD机试真题2023B卷 JAVA&JS】勾股数元组

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 勾股数元组 知识点编程基础 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 如果3个正整数 a b c 满足a2 b2 c2的关系 则称 a b c 为勾股数 著名的勾
  • C#中Validating和Validated事件

    您可能经常需要检查用户输入到 Windows 窗体中的信息是否有效 例如 如果您有一个电话号码的 TextBox 控件 则可以检查该控件是否只包含适当的字符 数字 括号和连字符等等 通常 可使用正则表达式验证用户输入的数据 了解Valida
  • powerdesigner汉化包

    PowerDesigner是一款专业的建模工具 如果你希望使用中文界面 你可以尝试使用汉化包 汉化包是一种用于翻译软件界面的工具 它可以将英文界面翻译成中文 你可以在网上搜索 PowerDesigner汉化包 并下载适合你当前版本的汉化包
  • 字符串函数的使用及模拟实现:strtok&strstr&strerror:

    字符串函数strstr的使用 char strstr const char str1 const char str2 Returns a pointer to the first occurrence of str2 in str1 or
  • LeetCode338. 比特位计数

    题目连接 https leetcode cn com problems counting bits 解题思路 这道题需要计算从 0 到 num 的每个数的二进制表示中的 1 的数目 最直观的方法是对每个数直接计算二进制表示中的 1 的数目
  • 使用c++超详细解释数据结构中的顺序栈和链栈

    在C 中 栈 Stack 是一种数据结构 它可以用来存储数据 并支持两种基本操作 压入 Push 和弹出 Pop 栈的特点是后进先出 Last In First Out LIFO 也就是最后压入的元素最先弹出 栈可以用数组或链表等数据结构来

随机推荐

  • hdu2030 汉字统计

    hdu2030 汉字统计 Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 4080 Accepted
  • 树莓派的杂七杂八

    一 交叉编译jpeg 9a 生成的库为libjpeg so 先从官网下载交叉编译器 直接解压到本地 将bin目录加入到系统变量中后 进入目录执行 configure CC arm none linux gnueabi gcc enable
  • 如何在 Flink 1.9 中使用 Hive?

    Flink on Hive 介绍 SQL 是大数据领域中的重要应用场景 为了完善 Flink 的生态 发掘 Flink 在批处理方面的潜力 我们决定增强 FlinkSQL 的功能 从而让用户能够通过 Flink 完成更多的任务 Hive 是
  • 字符串 有效的字母异位词

    LC 有效的字母异位词 给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词 注意 若 s 和 t 中每个字符出现的次数都相同 则称 s 和 t 互为字母异位词 func isAnagram s String t S
  • 华为云云耀云服务器L实例评测|使用Docker部署Leanote笔记工具

    华为云云耀云服务器L实例评测 使用Docker部署Leanote笔记工具 一 前言 1 1 云耀云服务器L实例介绍 1 2 Leanote简介 二 本次实践介绍 2 1 本次实践简介 2 2 本次环境规划 三 购买云耀云服务器L实例 3 1
  • Vue2基本知识

    记录Vue2基本知识 从引入vue js文件开始 然后提出问题 1 我们使用vue后怎样将外部数据传递给我们的DOM对象 2 DOM对象中的数据如果改变 如何通知外部数据改变 最后对问题分析得出答案 完整记录vue2中基础指令知识 提供完整
  • 一文教你在 centos7 下安装 Oracle19 C(完整版)

    前言 安装 Oracle 一直是本人工作以来想要做的事情 但是一直都没有安装成功 本人有一个习惯 所有的软件基本上都安装在centos系统下 这样 一方面是 在日常工作中 都是linux环境 另一方面 装在linux虚拟中 万一哪天你想退出
  • 04-7_Qt 5.9 C++开发指南_QTreeWidget和QDockWidget

    文章目录 1 实例功能简述 2 源码 2 1 可视化UI设计 2 2 mainwindow h 2 3 mainwindow cpp 1 实例功能简述 本节介绍 QTreeWidget QDockWidget 的使用 以及用 QLabel
  • osg漫游器

    在三维中常见的就是漫游整个场景 所谓漫游就是 观察者的视线从一个位置移动到另外一个位置或者在希望的方向上移动 在OSG中漫游可以通过改变观察者 相机 的位置和姿态来实现 三维世界中的模型的相对位置和形态不会发生变化 只是观察者的角度和位置发
  • c++学习笔记-指定二维vector大小

    在对二维vector如 vector lt
  • 阅读笔记篇卷首语

    2023年8月31日 周四晚上 我决定开设这个专栏 因为我知道有些文章可以改变人生 值得去细读
  • 【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

    未来的游戏开发程序媛 现在的努力学习菜鸡 本专栏是我关于游戏开发的学习笔记 本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体 遇到的问题描述 解决方式 Font Asset Creator 面板扩展
  • linux基本命令大全

    基本命令 关机 shutdown h halt init 0 poweroff 重启 shutdown r reboot init 6 pwd 查看工作目录 ls 查看指定目录的内容 l 列表显示 a 显示所有 包括隐藏文件 h 人性化的显
  • 【QT学习笔记】QAction和QToolButton的使用

    QAction可以在QT Creator中Action Editor中创建 QAction创建之后的两个使用方式 放到tool bar中 跟QToolButton绑定 ui gt tBtnListIni gt setDefaultActio
  • 虚拟服务器如何传东西,虚拟服务器如何传东西

    虚拟服务器如何传东西 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 计费项包括存储费和流量费 存储费根据存储库的不同进行
  • Reinforcement Learning 强化学习(四)

    Task03 本次学习主要参照Datawhale开源学习及强化学习蘑菇书Easy RL 第4章 策略梯度 Policy Gradient 4 1 策略梯度算法 在强化学习中有 3 个组成部分 演员 actor 环境 environment
  • odoo tree form 视图禁止创建、修改、删除、复制

  • 用标准C语言初始化线性表,c语言实现线性表的初始化,创建,查找,删除

    1 第一步定义线性表结构 typedef struct ElementType data MaxSize int length Lineartable 2 第二步线性表初始化 初始化线性表 Lineartable INITAL Linear
  • Go 每日一库之 gjson

    快速使用 先安装 go get github com tidwall gjson 后使用 package main import fmt github com tidwall gjson func main json name first
  • Hackinglab(鹰眼)——解密关

    目录 1 以管理员身份登录系统 2 邂逅对门的妹纸 3 万恶的Cisco 4 万恶的加密 5 喜欢泡网吧的小明 6 异常数据 7 md5真的能碰撞嘛 8 小明爱上了一个搞硬件的小姑凉 9 有签名限制的读取任意文件 10 美丽的邂逅与密码器的