zoukankan      html  css  js  c++  java
  • GS 原理及破解 《0day安全》

    1.原理:

      在main函数之前,会调用__security_init_cookie函数(win10,vs2017,release,x86);

      

      进入__security_init_cookie函数内部:

      __security_cookie(随机数,产生于ntdll.dll的函数,通过栈回溯,下.data+4的硬件断点,可以追踪,看的我头疼,不想弄)

      存在当前程序.data段的第4个字节,并将它按位取反,放入了.data的第0个字节。

      

      进入main函数:

      从.data+4的位置把__security_cookie取出来与当前栈的esp进行异或,得到的结果放入[ebp-4](这个位置不是固定的,不过都距离栈底较近)

      

      当函数返回之前:

      将[ebp-4]中的数据取出来,与esp异或,比较得到的结果与[.data+4]中的数据是否一致,来判断[ebp-4]的位置是否被修改过。

           

      

    2.GS的优点与缺陷(不考虑DEP,ALSR,优化等)(源于<<0day安全>>)

      ①修改栈帧中函数返回地址的经典攻击将被 GS 机制有效遏制;

      ② 基于改写函数指针的攻击,如 C++虚函数的攻击,GS 机制仍然很 难防御;

      ③ 针对异常处理机制的攻击,GS 很难防御;

      ④GS 是对栈帧的保护机制,因此很难防御堆溢出的攻击。

    3.方法

      可以修改.data+4的数据(如果可以的话),人工计算向栈内填值,骗过__security_check_cookie函数

  • 相关阅读:
    python cookbook 笔记二
    python cookbook 笔记一
    aircrack-ng笔记
    TeamCity 和 Nexus 的使用
    Linux 搭建 nexus 私服【转】
    maven阿里云镜像
    kali linux 破解wpa密码
    python正则表达式二[转]
    Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
    集合解析
  • 原文地址:https://www.cnblogs.com/jf-blog/p/12357344.html
Copyright © 2011-2022 走看看