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'
相关推荐
Paranoid-up1 小时前
安全启动和安全固件更新(SBSFU)6:编译流程——prebuild 与 postbuild 脚本
安全·iap·安全启动·安全升级·sbsfu
星夜夏空991 小时前
STM32单片机学习(4)——嵌入式概述
stm32·单片机·学习
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2026.05.10 题目:2770. 达到末尾下标所需的最大跳跃次数
笔记·算法·leetcode
LeeeX!1 小时前
OpenClaw CLI 完整实操笔记
笔记·openclaw
van久1 小时前
Day28 第四周总结 & 项目整体收官笔记
笔记
nashane1 小时前
HarmonyOS 6学习:HWAsan监测开启后应用崩溃的终极解决方案
学习·华为·harmonyos·harmonyos 5
露临霜1 小时前
人性的贪婪和妄念
笔记
谙弆悕博士1 小时前
Lua学习笔记
c语言·开发语言·笔记·学习·lua·创业创新·业界资讯
minglie11 小时前
zynq的栈监控与Xil_XXXAbortHandler问题排查
学习