Commit靶场学习笔记

前言

本文通过拆解靶场中 80 与 2222 端口的渗透过程,详解 Nmap 端口扫描、dirsearch 目录遍历、Burpsuit 爆破枚举等工具的使用,以及文件读取漏洞构造、sshd_config 配置文件审计、系统文件时间对比分析等核心思路,旨在为 CTF 攻防实践提供可落地的渗透测试方法与问题排查思路,帮助理解靶场环境中各类漏洞的发现、利用与提权逻辑。

正文

1、端口扫描

使用Nmap扫码靶机端口:

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

发现靶机开放80和2222端口:

进入80端口里,发现一个网页。

2、HTML代码审计

Ctrl+U查看网页源代码,看到注释处有用户名和密码:

3、目录遍历

对靶场开放的网页目录遍历:

bash 复制代码
dirsearch -u 192.168.31.77

发现login.php:

拿着上一步获取的用户名密码成功登录:

扫描完发现,还有一个上传目录upload:

说明可能存在文件上传漏洞:

4、文件读取漏洞利用

审计这个网页,发现一行逻辑:

这段代码的本意是「只允许读取以 file:// 开头的文件」,但实际逻辑等同于:

只要用户在 URL 里传 ?file=file://[文件路径],服务器就会读取并输出这个文件的内容。

编写文件读取命令:

html 复制代码
?file=file:///etc/passwd

发现一个高权限用户lingmj,现在得想办法读取到lingmj用户的密码。

继续构造文件读写命令:

html 复制代码
?file=file:///home/lingmj/.bash_history

发现存在编辑了.git目录下的config文件记录:

查看下这个config文件,拿到flag:

html 复制代码
http://192.168.31.77/dashboard.php?file=file:///home/lingmj/.git/config

成功远程拿到lingmj用户:

5、代码审计

检查系统中已安装软件包的文件完整性:

html 复制代码
dpkg -V

这么多改动的,靶机里有一些历史遗留的文件,其实也看不出来改动了什么。

方法(1):开动脑经,查阅sshd_config文件。

仔细想想,作者把靶机端口改成了2222,那说明/etc/ssh/sshd_config里面应该有猫腻,

进入查看:

html 复制代码
cat /etc/ssh/sshd_config

代码审计发现藏了一组用户密码。

方法(2):Brupsuit爆破枚举修改的目录

靶机作者出题,肯定会修改一些目录,

利用SecLists 这个渗透测试字典库的LFI-gracefulsecurity-linux.txt字典

bash 复制代码
cp /usr/share/seclists/Fuzzing/LFI/LFI-gracefulsecurity-linux.txt /root/Desktop

用Brupsuit爆破一下:

6、用户提权

尝试切过去:

html 复制代码
su - root

发现flag。

7、后话

比赛的时候,通过具体的修改的时间,来比较passwd和passwd-文件,确定哪个藏着猫腻:

html 复制代码
ls -l --full-time /etc/passwd
ls -l --full-time /etc/passwd-

也可以在整个系统(/)中查找所有比 /etc/passwd 文件更新(修改时间更晚)的文件目录,同时过滤掉包含 sys|proc|var|run|share|dev|ltmp|git 这些路径的结果:

html 复制代码
find / -newer /etc/passwd 2>&1 | grep -Pv 'sys|proc|var|run|share|dev|ltmp|git'

2>&1是 Shell 重定向语法,作用是:

  • 2 代表标准错误输出(stderr)(比如 find 遍历无权访问的目录时会报错);
  • 1 代表标准输出(stdout)(正常的查找结果);
  • 2>&1:把错误输出重定向到标准输出,让错误信息也能被后续的 grep 过滤(否则错误信息会直接打印到终端,无法过滤)。

grep -Pv 'sys|proc|var|run|share|dev|ltmp|git'

  • |:管道符,把前一个命令的输出作为后一个命令的输入; grep:文本过滤工具;
  • -P:启用 Perl 兼容的正则表达式(让 | 能在正则里表示「或」);
  • -v:反向匹配 ------ 只保留不匹配后面正则的内容(即过滤掉包含指定字符串的行);
  • 'sys|proc|var|run|share|dev|ltmp|git':正则表达式,匹配包含 sys、proc、var等任意一个字符串的行,-v 会把这些行过滤掉(因为这些目录多是系统临时 / 动态目录,无需关注)。

为什么要过滤这些目录?

sys/proc/dev 是系统伪文件系统(内存中动态生成,不是真实磁盘文件),var/run/share 是系统运行时目录,遍历这些目录会产生大量无意义结果和权限错误,过滤后结果更精准。

更美化的写法:

bash 复制代码
# 更优雅的写法:屏蔽错误输出,只保留正常结果过滤
find / -newer /etc/passwd 2>/dev/null | grep -Pv 'sys|proc|var|run|share|dev|ltmp|git'
相关推荐
路灯上の马陈6 小时前
Java 内部类 学习笔记
笔记·学习
希和20276 小时前
51 单片机入门笔记:江科大课程代码逐行讲解(按键控制 LED 流水灯)
笔记·单片机·mongodb
前进的李工6 小时前
Agent 学习笔记 12:Agent 的工具应该怎么设计
人工智能·笔记·学习·agent·工具调用·skill·工具设计
ever_you_love6 小时前
2026.11.9录屏笔记
笔记
li星野6 小时前
从 DICOM 到声学属性学习记录:HU 值怎么变成密度和声速
学习
希和20277 小时前
51 单片机按键控制 LED:江科大课程代码小白笔记
笔记·单片机·嵌入式硬件
希和20277 小时前
51 单片机 LED 流水灯:从直接法到循环法(江科大课程笔记)
笔记·单片机·mongodb
自信150413057597 小时前
重生之从0开始学习c++之——vector-中篇
c++·学习·算法
架构师伯子明7 小时前
ffmpeg学习4:opencv在音视频领域常用指令
opencv·学习·ffmpeg
山东科恩光电7 小时前
安全地毯压力感应防护在工厂自动化区域的实时监测与停机联动应用
安全