当前位置:首页 > 未分类 > 正文内容

PWN 的一次学习笔记

admin4年前 (2022-12-08)未分类595

编写人:Hanser

一、静态逆向分析(IDA):定位漏洞点

将目标文件拖入 IDA Pro,重点分析vulnerable函数,发现核心漏洞:

  • 危险函数:使用gets()函数读取输入,gets()无输入长度限制,可导致栈溢出(超过变量缓冲区 8 字节的部分会覆盖栈上的其他数据,包括返回地址)。

漏洞函数截图:

联想截图_20250822051750.png

二、动态调试(GDB/Pwndbg):确定溢出偏移

1. 启动调试与设置断点

将文件放入 GDB(推荐使用 Pwndbg 插件增强调试体验),执行以下命令:

联想截图_20250822051533.png

调试启动截图:

断点设置与运行截图:

2. 单步执行到漏洞函数

  • 用n(next)命令单步执行 main 函数,直至调用vulnerable函数;

  • 用s(step)命令进入vulnerable函数内部(跟进函数调用)。

单步执行截图:

3. 测试溢出与查看栈结构

步骤 1:输入测试数据(8 个 A)

在gets()函数等待输入时,输入AAAAAAAA(8 个 A,刚好填满变量缓冲区),然后继续执行:

# 输入8个A
AAAAAAAA

# 单步执行完gets()
n

输入测试数据截图:

步骤 2:查看栈布局

使用stack N命令查看栈的前 N 项(本题查看 24 项,足够覆盖缓冲区、EBP 和返回地址):

stack 24

栈结构截图:

步骤 3:分析栈关键区域

  • EBP(栈基指针):指向前一个函数的 EBP 值(栈中保存的 EBP),是栈溢出的 “分界点”;

  • 返回地址:EBP 下方(内存地址更高)的 4 字节数据,即函数执行完后要跳转的地址(本题中vulnerable函数默认返回main+93地址);

  • 可控区域:EBP 上方(内存地址更低)的缓冲区,输入数据可覆盖此区域,超过缓冲区的部分会覆盖 EBP 和返回地址。

栈区域分析截图:

默认返回地址(main+93)截图:

4. 确定溢出偏移量

通过调试发现:

  • 缓冲区大小:8 字节(变量占用);

  • EBP 占用:4 字节;

  • 总偏移量:8(缓冲区) + 4(EBP) = 12字节?不,后续通过 IDA 进一步确认:实际缓冲区到返回地址的偏移为16 字节(缓冲区) + 4 字节(EBP) = 20 字节(以最终 Payload 构造为准)。

三、Payload 构造(Python + Pwntools):实现栈溢出攻击

1. 工具准备与环境连接

使用pwntools库编写攻击脚本,首先导入模块并建立与目标程序的连接(本地调试时用process,远程攻击时用remote):

联想截图_20250822051435.png

脚本初始化截图:

2. 接收程序输出(可选)

若程序启动时有提示信息,用recvline()接收,避免干扰后续输入:

联想截图_20250822051702.png

3. 确定 Payload 结构

通过 IDA 和 GDB 调试确认:

  • 偏移量:16 字节(缓冲区) + 4 字节(EBP) = 20 字节(需用垃圾数据填充);

  • 目标地址:getshell()函数的起始地址(从 IDA 中获取,本题为0x8048522);

  • 打包地址:用p32()将 32 位地址打包为字节型数据(适配小端序)。

Payload 结构:

联想截图_20250822051453.png

Payload 构造分析截图:

getshell()函数地址截图(IDA 中查看):

4. 发送 Payload 并获取 shell

联想截图_20250822051624.png

5. 本地测试结果

发送 Payload 后,成功获取本地 shell,执行ls、pwd等命令验证权限:

四、远程攻击:实战利用

将本地调试通过的脚本修改为远程连接模式,替换process为remote:

联想截图_20250822051249.png

远程攻击脚本截图:

执行脚本后,即可获取远程服务器的 shell 权限,实现远程控制。

核心总结

  1. 漏洞定位:静态逆向(IDA)找危险函数(gets)和后门函数(getshell);

  1. 偏移计算:动态调试(GDB)确定缓冲区到返回地址的偏移量;

  1. Payload 构造:垃圾数据填充偏移 + 目标函数地址(打包为字节型);

  1. 权限获取:通过溢出覆盖返回地址,跳转到后门函数执行系统命令。


扫描二维码推送至手机访问。

版权声明:本文由克拉玛依十三年年社团发布,如需转载请注明出处。

本文链接:https://www.klmyssn.com/?id=60

分享给朋友:

“PWN 的一次学习笔记” 的相关文章

(原创)校园卡破解系列之权限克隆 [pm3 破解饭卡][pm3 克隆数据][校园卡克隆][IC 卡克隆]

(原创)校园卡破解系列之权限克隆 [pm3 破解饭卡][pm3 克隆数据][校园卡克隆][IC 卡克隆]

一、免责声明本文主张交流与科研学习,请勿对文中提及的内容进行恶意使用!本社团及作者对读者后续的行为不承担任何法律责任。此文章是综合之前饭卡复制、权限提升漏洞后的合并版本,后半部分聚焦饭卡破解;若看过之前文章,可直接跳转至 “(一)饭卡权限提升” 章节。二、基础准备:工具与测试对象1. 核心工具:PM...

(原创)求人不如求己 -- 剪辑音乐就是这么简单 [如何剪辑音乐]

(原创)求人不如求己 -- 剪辑音乐就是这么简单 [如何剪辑音乐]

每每到了学校有活动,需要播放歌曲时,QQ 就多几个好友,消息又 99+,不消问什么事情,就知道是找我剪辑歌曲的同学了。怎么说,我这人对别人提出的需求,都尽力去帮助的,在剪辑音乐这事情上,从没拒绝过,但年复一年,每次剪辑音乐其实很简单,但是量多,就比较影响自己时间了,我又不会拒绝别人,很是尴尬,所以在...

(原创)还在用软件翻墙?看我几秒搞定!

首先说下原理,修改设备 hosts 文件信息,将各大国外网站域名直接指向服务器 ip,绕过国家的 GFW 防火墙,从而可以访问 Google、Facebook、ebay、YouTube、Yahoo、、、太多还是不打了,自己测试-------------------------------------...

(原创)sqlmap 注入初级教程 [sqlmap][sqlmap 指令][sqlmap 怎么用]

(原创)sqlmap 注入初级教程 [sqlmap][sqlmap 指令][sqlmap 怎么用]

一、熟悉 sqlmap 之路:核心注入场景与方法1. Sqlmap 之 Post 注入Post 注入适用于表单提交(如登录页、数据提交页)等场景,核心是通过抓取 Post 请求数据进行注入测试,以下为 4 种常用方法:方法一:基于请求文件(-r 参数)# 基础用法(请求文件与sqlmap同目录)sq...

(原创) 校园卡破解系列之内网渗透提权校园卡服务器 [内网渗透][服务器提权][渗透内网]

(原创) 校园卡破解系列之内网渗透提权校园卡服务器 [内网渗透][服务器提权][渗透内网]

一、渗透背景与环境准备1. 时间与环境渗透时间:上午大课间(仅十几分钟完成)操作设备:班级 XP 系统电脑(性能有限,需选择轻量工具)内网 IP:本地 IP 为172.18.33.38,扫描网段定为172.18.32.0-172.18.33.02. 工具选择优先工具:Kali 的 MSF 模块(可直...

(原创)Web 渗透实例之中国教育部青少年普法网站逻辑漏洞【网站逻辑漏洞】【网站逻辑漏洞挖掘】【网站逻辑漏洞实例】

(原创)Web 渗透实例之中国教育部青少年普法网站逻辑漏洞【网站逻辑漏洞】【网站逻辑漏洞挖掘】【网站逻辑漏洞实例】

重要声明:此漏洞于 2016 年 12 月 2 号由社团成员挖掘出来,已经第一时间提交到补天,现已修复,发出来仅供学习与讨论,请勿用于非法途径!!!一、漏洞基本信息漏洞关联网站:中国教育部青少年普法网站用户登录界面地址:https://user.qspfw.com具体漏洞页面:用户密码找回界面,地址...