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

PWN 的一次学习笔记

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

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

(原创)NOIP [全国青少年信息学奥林匹克联赛] 初赛之后的杂谈

(原创)NOIP [全国青少年信息学奥林匹克联赛] 初赛之后的杂谈

没人能比我更懂你。这次的 noip 初赛考的很砸,比数学还砸。深夜的情感就像熬过冬日的野草。我们都在寻找,寻找着一个能够和自己差不多的人,去对他倾诉自己的情感,去倾听他的情感。在一次一次的失败,一次又一次的成功后,留下的只是回忆;在一次次的交流中,一次次的倾听中,留下的是感情。就像我们总是在学习,却...

(原创)一张图片,你的信息暴露无遗~

(原创)一张图片,你的信息暴露无遗~

大家好,我是 31,今天教给大家一个定位的小技巧,也没什么技术含量,看着玩就好啦~~~~昨天看到社团老大 “十三年” 在群里发照片 “装 13”,结果被我抓到了,哈哈哈哈,每个人都有大意之时。不多说,上图(居然发现手表不错,和我的一样帅~~~~~):**一、科普:什么是 Exif 数据?1. Exi...

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

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

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

小讲堂心得

小讲堂心得

参加小讲堂活动,是受邀两位学习部的同学十分热情的邀请,为同学们讲讲网络安全方面的知识。我感到十分荣幸,但又有些许担忧,怕讲不好,因为网络安全这个学科涉及的知识面十分宽泛,网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理...

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

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

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

(原创)市教育局 web 渗透 — 市 OA 系统 [web 渗透实例][教育局网络安全][内网安全][内网渗透][oa 系统漏洞]

(原创)市教育局 web 渗透 — 市 OA 系统 [web 渗透实例][教育局网络安全][内网安全][内网渗透][oa 系统漏洞]

一、渗透前置说明(授权与免责)1. 授权声明本次渗透是在取得教育局网络第三方厂商(即时讯立维公司)授权许可之后进行的渗透测试。漏洞报告已第一时间交给教育局及第三方厂商,并协助厂商完成修补,至文章发布时,文中漏洞已修复。本文仅选取漏洞报告部分内容公开,完整漏洞报告模板存放于社团群内部。2. 免责申明请...