首页
社区
课程
招聘
[翻译]Exploit 编写系列教程第六篇 绕过Cookie,SafeSeh,HW DEP 和ASLR
发表于: 2009-12-8 19:43 40375

[翻译]Exploit 编写系列教程第六篇 绕过Cookie,SafeSeh,HW DEP 和ASLR

dge 活跃值
6
2009-12-8 19:43
40375
收藏
免费 7
支持
分享
最新回复 (33)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
非常感谢!辛苦!
2012-1-6 10:34
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
27
话说我在看英文版的,想了想还是搜搜看雪有没翻译吧。。还真有!
2012-12-21 16:24
0
雪    币: 34
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
谢谢分享!
2014-8-27 18:03
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
通过覆盖上层函数的栈数据来绕过

当函数的参数是对象指针或结构指针时,这些对象或结构存在于调用者的堆栈中,这也能导致GS 被绕过,
(覆盖对象和虚函表指针,如果你把这个指针指向一个用于欺骗的虚函数表,你就可以重定向这个虚函数
的调用,并执行恶意的代码。)。
请问怎么覆盖对象和虚函数表指针,不是这样来的吗[ptr][buffer][ebp][...]
2014-8-28 07:44
0
雪    币: 156
活跃值: (190)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
30
感谢分享, 我个人在实验过程中遇到一个问题, 请解答。

+++++++++++++++++++++++++++++++++++++++++
测试环境: Windows XP SP3 English
             Microsoft Visual C++ 2008 Express Edition
+++++++++++++++++++++++++++++++++++++++++

[Exploit 编写系列教程.pdf ]
[
第六篇: 绕过 Cookie,SafeSeh,HW DEP和 ASLR][第144页]

使用Visual C++ 2008 编译下面代码, 如下图所示。

[/B]#include "stdafx.h"
#include "stdio.h"
#include "windows.h"

void GetInput(char* str, char* out)
{
    char buffer[500];
    try
    {
         strcpy(buffer,str);
         strcpy(out,buffer);
         printf("Input received : %s\n",buffer);
    }
    catch (char * strErr)
    {
        printf("No valid input received ! \n");
        printf("Exception : %s\n",strErr);
    }
}

int main(int argc, char* argv[])
{
    char buf2[128];
    GetInput(argv[1],buf2);
    return 0;
}[B]


使用Windbg进行调试,显示信息如下:
[/B]CommandLine: "C:\Documents and Settings\lab\Desktop\basicbof\basicbof\Debug\basicbof.exe" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Symbol search path is: SRV*C:\localsymbols*http://msdl.microsoft.com/download/symbols;cache*c:\localsymbols*http://msdl.microsoft.com/download/symbols
Executable search path is: 
ModLoad: 00400000 00419000   basicbof.exe
ModLoad: 7c900000 7c9af000   ntdll.dll
ModLoad: 7c800000 7c8f6000   C:\WINDOWS\system32\kernel32.dll
(574.f5c): Unknown exception - code c0000135 (first chance)
(574.f5c): Unknown exception - code c0000135 (!!! second chance !!!)
eax=0012fc54 ebx=00000000 ecx=0012fca8 edx=7c90e4f4 esi=7ffd8000 edi=c0000135
eip=7c96478e esp=0012fc54 ebp=0012fca4 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
ntdll!RtlRaiseStatus+0x26:
7c96478e c9              leave[B]


为何没有出现文中覆盖EIP的情况,
(908.470): Access violation - code c0000005 (!!! second chance !!!)
eax=0000021a ebx=00000000 ecx=7855215c edx=785bbb60 esi=00000001 edi=00403380
eip=41414141 esp=0012ff78 ebp=41414141 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
41414141 ??
上传的附件:
2015-6-23 19:08
0
雪    币: 3003
活跃值: (479)
能力值: ( LV15,RANK:1395 )
在线值:
发帖
回帖
粉丝
31
那位大牛贴下原文地址
2015-6-23 22:05
0
雪    币: 2
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
泉哥,我在这里有个疑问,这个30的偏移是怎么来的呢?
假如抛开教程来编写这个exp,当我发现可以触发异常并且可以覆盖SEH和nSEH,那我该怎么确定nSEH应该指向什么指令?
第三篇里面用的是pop/pop/ret,也有一段说明为什么这么做可以跳到SEH去执行,知其然也知其所以然。这一篇里面虽然我用call [ebp+30]也成功了,但是原文里好像没说这么做的原因,是纯粹靠调试过程中的观察还是说有系统底层机制的原理在里面呢?
帖子过去比较久了,不晓得泉哥还看不看得到…
2015-8-31 11:28
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
辛苦了,翻译的非常好
2016-4-11 22:44
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
bruceDL 泉哥,我在这里有个疑问,这个30的偏移是怎么来的呢? 假如抛开教程来编写这个exp,当我发现可以触发异常并且可以覆盖SEH和nSEH,那我该怎么确定nSEH应该指向什么指令? 第三篇里面用的是po ...
你的问题有答案了吗 ?我看到这里也有疑问
2018-8-9 21:51
0
游客
登录 | 注册 方可回帖
返回
//