利用IAT导入表进行代码的注入

单链表结构的缓冲区溢出攻击
代码环境是有一个8字节的缓冲区,和一个指向下一个结构体的链表,程序在构造完成链表后,有两次复写链表值的操作,利用这两次值的覆盖,第一次缓冲区溢出覆盖到下一个链表的指针为0018FEE8,在PE里事先做好了通用跳板的地址0x7798d7b,利用通用跳板,在程序执行到main函数返回的时候自动弹出到call esp,然后流程跳转到我们自己执行的代码。这种溢出方法也越过了gs的检查。
关键的漏洞代码,因为在做缓冲区拷贝的时候,没有做检查,并且拿链表的下一个位置的代码被找到了,这个地址也是可以被修改的。
利用IAT导入表进行代码的注入
利用api的间接调用,直接调用到模块的导入地址中,下例就是把kernel32.LoadLibraryA的地址填上它相邻的地址0x4301bc直接执行代码,在程序调用这个api的时候,就会执行我们的代码

 

 

 

 

DEP数据保护
定义:在内存有执行属性的内存中执行代码会除法c05异常,加了DEP壳和vmp虚拟机都费掉了过DEP保护,把堆栈返回地址改为VirtualProtect的地址,把前面的90填上VirtualProtect的参数,在VirtualProtect返回地址处填通用跳板,通用跳板跳到jmp ebp =0x0018ff40,0x0018ff40在跳转到0x0018ff5c位置处执行代码即可

 

 

posted @ 2020-06-03 10:28  拂树若生花  阅读(420)  评论(0编辑  收藏  举报