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

PWN 的一次学习笔记

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

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

(转载) 告诉你被盗的 iPhone 是如何一步步被黑客解锁的 [解锁 iPhone]

(转载) 告诉你被盗的 iPhone 是如何一步步被黑客解锁的 [解锁 iPhone]

写在前面的话iPhone 到底安不安全?这个梗已经讨论了很久了。而我今天要告诉大家的是,就算你的 iPhone 6s 设置了六位数字密码,并且还有 touch ID 的保护,黑客同样能够解锁你的手机。故事背景就在三天之前,有一名用户告诉我们他的 iPhone 6s 被偷了。就在他的手机被盗之后不久,...

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

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

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

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

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

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

小讲堂心得

小讲堂心得

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

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

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

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

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

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

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