简介

Dword shoot,一种很简单的漏洞溢出技巧,所以就简单的说明一下吧。dword shoot漏洞是出现在双向链表表删除的时候出现的一种漏洞类型。(双向链表是什么不用我解释吧)在进行双向链表的操作过程中如果因为处置不当,比如溢出等等的情况下,构成双向链表的指向前一个和后一个节点的两个指针被恶意的改写的话,就会在链表删除的时候发生的漏洞。

漏洞原理与利用

这里我们先定义一个结构体作为双向链表的节点

struct node
{char data[32];struct node *fd;            //指向前一个节点struct node *bk;            //指向前一个节点
};

一个简单的节点。现在我们写一个双向链表删除的函数

void delete(struct node *p)
{struct node *FD;struct node *BK;/*获得前一个和后一个节点*/FD = p->fd;BK = p->bk;/*从链表中解绑定*/FD->bk = BK;BK->fd = FD;/*装的像一点*/free(p);
}

很正常的链表删除的工作,如果没有人恶意的修改fd和bk这两个指针的话。但是,如果一个粗心的程序猿在操作的data的时候使用了比如gets这样的函数,那么我们就可以改写这两个指针了。现在我们将待删除的节点的两个指针改改写了。

fd = addr_shellcode
bk = free@got - 0x20

现在我们把fd改成了一个地址,shellcode的地址,然后将bk改成了指向了free@got - 0x20也就是got表中的free在减0x20的地址。(不要问我想干什么,你懂的)然后我们调用一下这个delete函数。

void delete(struct node *p)
{struct node *FD;struct node *BK;FD = p->fd;         //FD = addr_shellcode   也就是FD现在指向了shellcodeBK = p->bk;         //BK = free@got - 0x20  现在的BK指向了free@got - 0x20的地方FD->bk = BK;        //FD->bk 也就是addr_shellcode+0x24 = free@got  写shellcode的时候记得跳过这里BK->fd = FD;        //BK->fd 也就是(free@got-0x20)+0x20.其实就是free@got = addr_shellcodefree(p);            //嘿嘿,现在调用free的话,会跳到shellcode哦
}

然后,就没有然后了。随你搞了233333

补充

当然,其实如果双向链表中的2个指针被改写的话,会发生很多有趣的事情。有的时候也许不能使用shellcode,或者是无法让程序删除节点。但是总有方法去达到目的的,具体的方法就要看脑洞了。

总之,c语言和汇编语言才基础才是王道。

Dword shoot相关推荐

  1. 堆溢出DWORD SHOOT原理

    1.双向链表上有a.b.c一共3个连续的堆块,a.b.c三者之间的实际物理地址可能相差很大,但是绝对不会三者之间无其他字节,如果无其他字节,那表示他们三个可以合并成一个物理连接起来的大块,堆管理系统很 ...

  2. 堆溢出的DWORD Shoot核心原理-口语化

    1.双向链表上有a.b.c一共3个连续的堆块,a.b.c三者之间的实际物理地址可能相差很大,但是绝对不会三者之间无其他字节,如果无其他字节,那表示他们三个可以合并成一个物理连接起来的大块,堆管理系统很 ...

  3. 堆溢出(二)空表DWORD SHOOT

    0x000 环境 虚拟机 VirtualBox 5.0.20 系统 windows 2000 Kali linux 工具 VC++6.0 OllyDbg 1.10 汉化版 AsmToE v5.20 0 ...

  4. 5.4 堆溢出利用(上)——DWORD SHOOT

    目录 一.预备知识 二.实验环境 三.实验代码 四.实验步骤 一.预备知识 堆管理系统的三类操作:堆块分配.堆块释放和堆快合并归根结底都是对链表的修改.堆溢出利用的精髓就是用精心构造的数据溢出下一个堆 ...

  5. DWORD SHOOT的攻击原理

  6. 堆溢出攻击(XP SP2 - 2003)

    微软在堆中也增加了一些安全校验操作,使得原本是不容易的堆溢出变得困难重重: * PEB Random:在 Windows XP SP2 之后,微软不再使用固定的 PEB 基址 0x7FFDF000,而 ...

  7. 《0day安全:软件漏洞分析技术》的一点总结

    评价 首先评价一下这本书吧:(先抑后扬吧)  有些漏洞是win2000的,实在是太老了,难以进行实践,但是介绍一下也是很好的,但是不能实践理解得不深刻.[第一版是08年出版的,第二版是2011年,我手 ...

  8. Use After Free Tutorial

    Halvar Flake 在"Third Generation Exploitation"中,按照攻击的难度把漏洞利用技术分为了3个层次: (1) 第一类是基础的栈溢出利用.攻击者 ...

  9. 利用chunk重设大小攻击堆

    只是笔记························································ 堆块学习··· DWORD SHOOT 下面环境为  XP   sp3 VC6 ...

最新文章

  1. VB随笔 -基本语句之循环语句
  2. 【LeetCode】309. Best Time to Buy and Sell Stock with Cooldown
  3. 自适应响应式炫酷汽车配件类网站源码 html5高端大气汽车网站织梦模板
  4. 7-4 统计Java程序中关键词的出现次数 (25 分)
  5. 【Linux】ubuntu中怪异的vi编辑器
  6. KNN(六)--LSH算法
  7. visio导入阿里云和aws产品模具
  8. 小度计算机笔记,开售告罄、口碑炸裂、高语音交互率的小度耳机,全新升级语音笔记...
  9. erdas几何校正_erdas图像几何校正操作步骤指南.doc
  10. 移动应用的引导模式设计
  11. MySQL中表的增删查改操作(CRUD)
  12. 【Python 数据科学】分组group by基础
  13. 【有利可图网】PS实战教程43:PS合成沙尘暴侵蚀打散场景的灰姑娘图片
  14. BLDC无刷电机驱动板,foc驱动板,有霍尔接口,反电动势接口,三相电流采集接口
  15. 时间序列进行分析的一些手法以及代码实现(移动平均、指数平滑、SARIMA模型、时间序列的(非)线性模型)
  16. matlab寻峰代码,寻峰的函数!! - 程序语言 - MATLAB/Mathematica - 小木虫论坛-学术科研互动平台...
  17. Html div 打印自动分页,网页打印自动分页
  18. 信捷pLC C语言错误格式,信捷PLC常见问题及处理方法大全
  19. ie8与ie9的区别
  20. [黑马IOS自学第九篇]OC语言基础,面向对象概念,类的创建,OC多文件开发等

热门文章

  1. API的常识与对接,商品详情数据案例分析
  2. 如何成为一名高级数字 IC 设计工程师(6-5)数字 IC 验证篇:覆盖率收集
  3. Flutter发送系统通知(flutter_local_notifications)
  4. 华为核心交换如何配置源地址转换_华为三层交换机配置步骤解释资料全
  5. 静态路由、RIP路由、OSPF路由配置、浮动路由
  6. 图的m着色问题(子集树回溯法)
  7. 最失败的项目管理 zz
  8. android 调用go静态库,CGO,GOLANG调用C库,调用代码、静态库或动态库
  9. java timestamp 年月日_如何在java中从TimeStamp获取日期
  10. 手放开游戏(擦衣服游戏)项目源码