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

PWN 的一次学习笔记

admin3年前 (2022-12-08)未分类120

编写人: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 的一次学习笔记” 的相关文章

(原创)还在担心伙食费?学完这个就不用担心啦!【ACR122复制】【饭卡破解】【破解食堂饭卡】【饭卡漏洞】【M1卡破解】

(原创)还在担心伙食费?学完这个就不用担心啦!【ACR122复制】【饭卡破解】【破解食堂饭卡】【饭卡漏洞】【M1卡破解】

(原创)还在担心伙食费?学完这个就不用担心啦!【ACR122复制】【饭卡破解】【破解食堂饭卡】【饭卡漏洞】【M1卡破解】本人小菜一枚,技术不精请多指教~~~~~~~~——————By-5431开始吧!!!!作为集团公司里的一员,享受员工待遇是应该的,入职的时候说好的包吃住,现在呢???自从饭堂承包出...

(原创) 校园卡破解系列之数据修改 [pm3 破解饭卡][pm3 修改数据][校园卡修改][IC 卡修改数据]

(原创) 校园卡破解系列之数据修改 [pm3 破解饭卡][pm3 修改数据][校园卡修改][IC 卡修改数据]

(二)吃不完的饭卡提升完 IC 卡权限,就该考虑能不能修改饭卡金额了。通过两次消费前后饭卡数据的对比分析,发现虽然卡片数据包含较多扇区和区块,但消费前后变化的地方仅涉及两个扇区,这为后续分析提供了便利。通过十六进制与十进制转换,可进一步拆解变化的数据:消费后金额:373.2(数字:37320;16...

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

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

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

(原创)web 渗透实例之克市教育局内网渗透 — 市十六小

(原创)web 渗透实例之克市教育局内网渗透 — 市十六小

引言下午元旦搞活动不上课,在机房浪一波。想到上次内网提权了学校饭卡管理服务器,便把 bugscan 的节点加到这个服务器了 —— 因为该服务器处于教育局内网,bugscan 直接扫出来了很多内网 IP 的网站,渗透了一波,如市三中、新一中、十八小、十六小等等。之前暑假对教育局 web 站点渗透都是外...

带你挖掘文件包含漏洞之代码审计 #4 实战五个案例

带你挖掘文件包含漏洞之代码审计 #4 实战五个案例

在 PHP 安全中,文件包含漏洞是危害严重的漏洞!本文不再讲解基础概念,直接进入实战环节。一、文件包含漏洞挖掘要点核心关键字:require()、require_once()、include()、include_once()(注意:函数名中括号与参数间存在空格,效果相同);本次实战对象:CMS 系统...

利用 Wireshark 任意获取 QQ 好友 IP 实施精准定位

利用 Wireshark 任意获取 QQ 好友 IP 实施精准定位

虽然网上已经有了很多获取 IP 的 QQ 插件,但是其原理大致都是相同的,但是插件的安全性而言就不敢恭维了,下面介绍如何利用 Wireshark 获取好友 IP。一、选择本机网卡并启动 Wireshark 监听打开 Wireshark 软件,在界面中选择需要监听的本机网卡(根据网络连接方式选择,如无...