美文网首页
ASLR绕过

ASLR绕过

作者: BJChangAn | 来源:发表于2018-01-09 23:05 被阅读0次

0x00 覆盖部分地址绕过ASLR

这一类绕过方法不仅是覆盖部分返回地址,还包括结合uaf等等进行利用,2016hctf的“就是干”就是一个很好的综合利用。这里是在windows下的覆盖部分返回地址绕过ASLR。

书中实验的环境是vista,不过没下到要求的vista sp0?最后拿win7(应该是sp0?)做的尝试,也没有什么别的坑。

Windows 7 x64

VS2008

Ollydbg

IDA Pro

以及:

NX        Disabled

Canary Disabled

ASLR   Enabled

代码:

#include "stdafx.h”

#include<stdlib.h>

char shellcode[]=

""

void *test()

{

char t[256];

__asm int 3     

memcpy(t,shellcode,262);

return t;

}

int _tmain(int argc, _TCHAR* argv[])

{

char temp[200];

test();

return 0;

}

因为ASLR的原因只能覆盖部分返回地址,所以shellcode必须放在前面。在linux中PIE的随机是在4KB即一个内存页大小的单位进行的,16进制地址的低三位是不变的;在实验中发现低四位都是固定的。

msf生成shellcode

193字节的shellcode,用nop(\x90)填充,总共260字节之后就可以覆盖到返回地址。

此时返回地址为0x361000,只需要在附近找到一条地址为0x36XXXX的指令来跳转到shellcode去执行(因为地址随机化的原因最直接的方法是相对跳转)

memcpy的返回值是其拷贝数据的目标起始地址,而这个值存放在eax中,而一直到retn的过程中这个值没有被破坏,即只需要一条jmp eax / call eax即可跳转到shellcode去执行。

综上,只需要继续覆盖,将返回地址的低两个字节覆盖为\x14\x1c,函数返回时就会执行call eax,从而跳转到shellcode去执行。

弹出calc.exe

0x02 Heap Spray绕过ASLR

留坑

相关文章

  • ASLR绕过

    0x00 覆盖部分地址绕过ASLR 这一类绕过方法不仅是覆盖部分返回地址,还包括结合uaf等等进行利用,2016h...

  • 栈溢出技巧(上)

    ASLR和PIE 我们都知道由于受到堆栈和libc地址可预测的困扰,ASLR被设计出来并得到广泛应用,后来各种绕过...

  • Mach-O地址

    ASLR1.1 什么是ASLR1.2 iOS4.3开始引入了ASLR技术 Mach-O的文件结构 未使用ASLR ...

  • 覆盖低位泄露.text地址绕过PIE(ASLR)

    2016年hctf的一道pwn题就是干,同时涉及到PIE绕过、uaf、ROP的姿势,先看下防护基本上都开了: 程序...

  • iOS逆向-LLDB高级用法&Cycript-(ASLR)(Ⅷ)

    ASLR ASLR(Address Space Layout Randomization),地址空间布局随机化。是...

  • iOS逆向与安全5.2:LLDB进阶

    ASLR ASLR(Address space layout randomization)是一种针对缓冲区溢出的安...

  • ASLR

    概述 ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保...

  • ASLR

    操作系统的随机地址ASLR机制我们都了解,但是具体如何实现的,读了本片文章才了解到是通过基于基地址的随机偏移量完成...

  • PWN入门第五课(绕过ASLR)

    引用英文博客:https://sploitfun.wordpress.com/2015/05/08/bypassi...

  • 十三 ASLR

    一 Mach-O文件内存分布 二 ASLR详解 三 实例演示ASLR的应用 一 Mach-O文件内存分布 我们平时...

网友评论

      本文标题:ASLR绕过

      本文链接:https://www.haomeiwen.com/subject/lgcgnxtx.html