zoukankan      html  css  js  c++  java
  • Windows平台的rop exp编写

    摘抄自看雪

    Windows的ROP与Linux的ROP并不相同,其实Linux下的应该叫做是ret2libc等等。Windows的ROP有明确的执行目标,比如开辟可执行内存然后拷贝shellcode,比如释放可执行执行文件然后执行等等,总之要依赖于一些关键的Windows API来进行。

    进行ROP的目的:绕过DEP保护

    ROP gadgets:是以 ret 指令结尾的连续的指令

    查找gadgets的算法:

    1. 搜索所有的ret指令
    2. 向前遍历,判断ret的前几个字节是否为合法指令。保留能构成有效指令的最大字节数20 bytes。记录这些指令序列。

    常见的功能性gadgets:

    • 赋值寄存器:如:pop eax;ret;
    • 从内存读:如:mov ecx,[eax];ret;
    • 向内存写:如:mov [eax],ecx;ret;
    • 数学运算:如:add  eax,0x0b;ret;
    • 系统调用:如:int 0x80;ret;

    避免使用的gadgets:

    • 用包含leave的 gadgets,会导致栈祯不可控
    • 用包含pop ebp的 gadgets,会导致栈祯不可控
  • 相关阅读:
    网络抓包工具使用
    JAVA 原子操作类
    guava collection/cache初探
    MiniGUI
    Cookie
    System V IPC
    SQLite交叉编译
    NCurses交叉编译
    双向循环链表
    VMware安装Windows Server 2008
  • 原文地址:https://www.cnblogs.com/Ox9A82/p/5755805.html
Copyright © 2011-2022 走看看