能力值:
( LV2,RANK:10 )
26 楼
非常感谢!辛苦!
能力值:
( LV3,RANK:30 )
27 楼
话说我在看英文版的,想了想还是搜搜看雪有没翻译吧。。还真有!
能力值:
( LV2,RANK:10 )
28 楼
谢谢分享!
能力值:
( LV2,RANK:10 )
29 楼
通过覆盖上层函数的栈数据来绕过
当函数的参数是对象指针或结构指针时,这些对象或结构存在于调用者的堆栈中,这也能导致GS 被绕过,
(覆盖对象和虚函表指针,如果你把这个指针指向一个用于欺骗的虚函数表,你就可以重定向这个虚函数
的调用,并执行恶意的代码。)。
请问怎么覆盖对象和虚函数表指针,不是这样来的吗[ptr][buffer][ebp][...]
能力值:
( 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 ??
上传的附件:
能力值:
( LV15,RANK:1395 )
31 楼
那位大牛贴下原文地址
能力值:
( LV2,RANK:10 )
32 楼
泉哥,我在这里有个疑问,这个30的偏移是怎么来的呢?
假如抛开教程来编写这个exp,当我发现可以触发异常并且可以覆盖SEH和nSEH,那我该怎么确定nSEH应该指向什么指令?
第三篇里面用的是pop/pop/ret,也有一段说明为什么这么做可以跳到SEH去执行,知其然也知其所以然。这一篇里面虽然我用call [ebp+30]也成功了,但是原文里好像没说这么做的原因,是纯粹靠调试过程中的观察还是说有系统底层机制的原理在里面呢?
帖子过去比较久了,不晓得泉哥还看不看得到…
能力值:
( LV2,RANK:10 )
33 楼
辛苦了,翻译的非常好
能力值:
( LV2,RANK:10 )
34 楼
bruceDL
泉哥,我在这里有个疑问,这个30的偏移是怎么来的呢?
假如抛开教程来编写这个exp,当我发现可以触发异常并且可以覆盖SEH和nSEH,那我该怎么确定nSEH应该指向什么指令?
第三篇里面用的是po ...
你的问题有答案了吗 ?我看到这里也有疑问