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、后话

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

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>&1Shell 重定向语法,作用是:

  • 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'
相关推荐
wuxinyan12312 分钟前
工业级大模型学习之路030:Streamlit 企业级智能体前端工作台
前端·学习·streamlit·智能体
长安紫薯1 小时前
学习AI日记
学习
星恒随风1 小时前
C语言数据结构排序算法详解(下):冒泡排序、快速排序、归并排序和计数排序
c语言·数据结构·笔记·学习·排序算法
码农小旋风1 小时前
使用 ChatGPT 聚合站前,先看安全和隐私判断清单
人工智能·安全·自然语言处理·chatgpt·claude
NagatoYukee1 小时前
Spring Security基础部分学习
java·学习·spring
Bruce_Liuxiaowei2 小时前
2026年5月第5周网络安全形势周报
人工智能·安全·web安全·ai·智能体
米小葱2 小时前
【学习笔记】cmake
笔记·学习
阿部多瑞 ABU2 小时前
AI红队攻防演化史(2023-2026):从虚拟角色到RLHF劫持——所有攻击方法全景总结与最新趋势分析
网络·人工智能·安全
辰海Coding3 小时前
MiniSpring框架学习-分解 Dispatcher
java·学习·spring·架构
初夏睡觉3 小时前
数据结构学习之~二叉堆 (P3378 【模版】堆)
数据结构·c++·学习