4 《软件安全实验》_虚函数攻击和SEH.pdfVIP

  • 32
  • 0
  • 约1.36万字
  • 约 63页
  • 2017-06-03 发布于湖北
  • 举报

4 《软件安全实验》_虚函数攻击和SEH.pdf

软件安全实验 北京邮电大学信息安全中心 张淼 zhangmiao@bupt.edu.cn 虚函数攻击及SEH 虚函数攻击 SEH攻击 一、虚函数攻击 虚函数攻击 SEH攻击 虚函数攻击 多态是面向对象的一个重要特性,在C++中, 这个特性主要靠对虚函数的动态调用来实现。 由于我们的重点是讲解利用虚函数进行攻击, 所以对虚函数和动态联编等概念不太了解的同学可 以课下学习一下。 在仅仅关注漏洞利用的前提下,我们可以简 单地把虚函数和虚表理解为一下几个要点。 1)C++类的成员函数在声明时,若使用关键字 virtual进行修饰,则被称为虚函数。 虚函数攻击 2 )一个类中可能有很多个虚函数。 3 )虚函数的入口地址被统一保存在虚表(Vtable)中。 4 )对象在使用虚函数时,先通过虚表指针找到虚表, 然后从虚表中取出最终的函数入口地址进行调用。 5 )虚表指针保存在对象的内存空间中,紧接着虚表 指针的是其他成员变量。 6 )虚函数只有通过对象指针的引用才能显示出其动 态调用的特性。 虚函数攻击 object 虚表(Vtable) 虚函数(Virtual function) 虚表指针 Virtual Virtual Function_1() Function_1 {………………} 其他成员 Virtual 变量 Function_2 Virtual Function_1() Virtual {………………} Function_3 Virtual Function_1() {………………} 虚函数的实现 虚函数攻击 我们来写一个利用虚函数执行shellcode的程序 char[] shellcode=“………”; class vf { public: char buf[200]; virtual void test(void) { coutClass Vtable::test()endl; } }; vf overflow, *p; 这段程序声明了一个类,具有buf和虚函数test ,声 明它的实例overflow和指针p。 虚函数攻击 void main(void) { LoadLibrary(user32.dll); char * p_vtable; p_vtable=overflow.buf-4;//point to virtual table __asm int 3 //reset fake virtual table to 0x0042E430 //the address may

文档评论(0)

1亿VIP精品文档

相关文档