zoukankan      html  css  js  c++  java
  • pwnable.kr-uaf-witeup

    没错,这道题超纲了,代码调试能力很差很差。

    一些相关小笔记。

    UAF是在内存释放后,原指针仍然指向此内存,可通过其他填充操作将此内存值设为指定的值,使得指针指向特定值。

    分析程序。本程序中,可输入1、2、3,分别表示显示子类内容、填充新内容、释放内存;有虚函数,虚函数的所有位置表即虚函数表位于实例的头端,父类的虚函数give_shell()表示进入交互式命令行,可重写子类的虚函数信息使得显示子类信息时通过指针执行give_shell()函数,从而获得足够高的权限,获得flag的信息;重写子类虚函数信息的方法是通过堆释放填充同大小同一堆特性,在指针指向的内存重新填充地址,使得它指向give_shell()方法,这样自然能进入交互式命令行了哦。

    分析程序可知,堆大小为24,父类give_shell()地址为0x401590,因为显示子类第二个虚函数introduce()内容,所以将子类的虚函数表头地址即子类实例地址设置0x401588,这样执行第二个虚函数时其实是执行give_shell()。

  • 相关阅读:
    WEP编码格式
    OSK VFS read数据流分析
    科学剖析濒死体验 "复生"者讲述"死"前1秒钟
    Android的开发相对于tizen的开发难度
    minix文件系统分析
    贴给小程序(1) 查找第一个0值
    Linux下的QQ
    OSK USB 驱动
    LRU算法之hash+list实现(转)
    插入排序
  • 原文地址:https://www.cnblogs.com/HYWZ36/p/10908623.html
Copyright © 2011-2022 走看看