Attack Lab:Phase1~Phase5【缓冲区溢出实验】

本文详细描述了一个实验过程,通过栈溢出攻击逐步控制程序流程,包括填充缓冲区、设置返回地址、利用return-orientedprogramming技巧调用特定函数,并处理栈随机化带来的挑战。作者使用hex2raw工具进行转换,逐步完成针对ctarget程序的攻击步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本实验所用文件不是csapp官网给出的,是学校下发的。可以参考我的思路。

phase 1

本阶段目标是使getbuf调用结束后,控制权交给touch1函数。

则我们要知道两件事:一是缓冲区大小,二是touch1在虚拟内存中的位置。

用objdump -d ctarget > ctarget.s命令,反汇编ctarget代码。用本机安装的vs打开,方便阅读。

如下图,缓冲区大小为0x38字节,即56字节。

如下图,touch1的位置在0x4018a3.

那么,就可以先输入56字节的任意数据,将getbuf的缓冲区填满,然后溢出8个字节这8个字节原本的内容是test调用getbuf后的返回地址。将这个返回地址用touch1的地址(0x4018a3)覆盖,这样在getbuf函数执行retq指令后,程序就会返回到touch1函数,执行touch1函数

新建一个名为e1.txt文件,输入以下内容。

这个e1.txt文件中的内容就是在getbuf中,用户要输入的内容。但是不能直接定向输入到ctarget中,而是要将数据通过hex2raw程序转化后输入ctarget程序

hex2raw的使用方法如下图。

所以,如下图,用hex2raw小工具得到真正的二进制代码,带参数运行。本阶段完成。(个人信息部分已隐藏)

phase 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值