
操作环境
攻击机:kali2026.1

虚拟网卡
VMnet19:192.168.19.0/24
靶机渗透
主机探测
arp-scan -l

靶机ip为192.168.19.137
端口探测
nmap -p- 192.168.19.137

开放了80端口,在浏览器中访问一下
端口访问

80端口没有发现什么异常,访问31337端口

目录扫描
dirb http://192.168.19.137
dirb http://192.168.19.137:31337/ -N 404


访问robots.txt,然后根据提示可找到flag1


可以猜测出,31337是ssh端口

分别下载这些文件

分别查看三个文件

得到用户名为simon
漏洞利用
使用john爆破加密私钥,首先使用ssh2john.py将加密的文件换成john可破解的hash格式
ssh2john id_rsa > 1
破解加密文件
john 1

使用ssh远程登录
ssh -i id_rsa simon@192.168.19.137

提权
查找特殊suid
find / -perm -4000 2>/dev/null

尝试使用/usr/local/bin/read_message提权,查找一下有无源码
find / -name "read_message*" 2>/dev/null

查看一下/root

发现flag,但是权限不够,查看源码,发现flag2

源码逻辑:当我们输入一个字符串时, 它将与Simon 一起检查字符串的前5字符。如果匹配, 它将运行一个程序/usr/local/bin/read_message。现在输入它被分配大小为20个字节。因此, 我们溢出堆栈进入超过20个字节的数据。我们使用前5个字符是 "Simon", 然后是 15 个任意字符, 然后是 "/bin/sh" 在第21字节,溢出提权。
运行read_message在输入用户名后随意加15字节(5+15=20)的内容,再加/bin/sh调用sh命 令解释器 ,获取root权限。

提权-堆栈溢出
查看/root/flag.txt
cat /root/flag.txt
