软件安全实验第四次实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件安全第三次实验报告
班级:2010211316 学号:10211593 姓名:曹梦晨
1、目标
(1)了解SEH攻击及虚函数攻击的基本原理
(2)通过调试SEH攻击代码,理解Windows异常处理机制,掌握针对SHE
的攻击方式,并利用OllyDbg跟踪异常状态。

(3)调试虚函数攻击代码,理解虚函数工作机制与内存分布方式,掌握基本
的虚函数攻击与计算方式,并可以用OllyDbg追踪。

(4)作业要求:
a)详述调试及追踪过程
b)实验结果需要截图证明
c)提交思考题的程序源代码等文件
(5)思考题
针对虚函数思考题程序,研究如何利用栈溢出的方式攻击目标代码,达到执行shellcode的目的,弹出对话框。

2、测试步骤与结果
2.1 SEH攻击
Step1:首先建立一个新Win32 Console Application工程,命名为m_seh。

图2-1 建立m_seh工程
Step2:使用Depends.exe寻找MessageBox地址
由于实验环境为win7操作系统,接下来将新建一个调用MessageBox的工程,并调用该函数。

用软件剖析,尝试寻找MessageBoxA的入口地址:
图2-2 构造调用MessageBox的程序
在kernel32.dll中寻找MessageBox函数的入口点:
图2-3 寻找exitprocess函数的入口点
这里可以看出,user32.dll的入口地址为0x77B10000,而MessageBox的入口地址为0x005EA11。

然后将这两个地址相加得到MessageBox的入口地址为:0x77B6EA11。

修改Shellcode代码,将对应位置改为本地治
图2-4 修改shellcode中MessageBoxA函数的入口点Step3:接下来通过调试定位shellcode的起始地址:
图2-5 查找shellcode地址
将shellcode地址0x00425B40填充到第213-216字节处,即:
图2-6 完整shellcode示意图运行程序,完成SHE攻击:
图2-7 程序运行结果
2.2 虚函数攻击
Step1:在上述实验的基础上,新建工程命名为m_vf
图2-8 新建m_vf工程
Step2:修改虚函数入口地址以及shellcode
图2-9 shellcode地址
图2-10 虚表地址
这里首先找到shellcode的地址为0x00428E50,然后找到虚表地址,将其加上212得到0x00428F24。

将虚表指针改为:
p_vtable[0]=0x24;
p_vtable[1]=0x8F;
p_vtable[2]=0x42;
p_vtable[3]=0x00;
然后再根据上题得出的MessageBox结果对shellcode进行修改:
图2-11 修改shellcode1结果
Step 3:运行程序得到结果
图2-12 程序运行结果
3、测试结论
这次实验更让我了解到win7下做了很多安全上的措施,我切实体会到,每次开机的函数入口点地址都会发生变化!这个事情让我痛苦万分,每次实验都要重新寻找入口点!是否能找到一种方法,可以不需要依据函数硬入口地址,就可以调用这个函数呢?知道还有两种不同的shellcode跳转方法都可以达到相同的效果,看来溢出带来的问题不容忽视。

4、思考题
针对虚函数思考题程序,研究如何利用栈溢出的方式攻击目标代码,达到执行shellcode的目的,弹出对话框。

方法同上,之前就一直在定位shellcode,只不过这次应该要用到pl文件
用UE编辑,将之前的shellcode嵌入pl文件:
图4-1 构造pl文件
参数1是要拷贝给overflow.buf,用这个缓冲区存shellcode,则shellcode的起始地址为0x00429B34
图4-2 寻找shellcode入口地址
同理对pl文件的最后的地址进行修改,将虚函数入口地址改为0x00429B34即可。

相关文档
最新文档