论坛: 黑客进阶 标题: 利用监视点定位导致溢出的代码点 复制本贴地址    
作者: bridex [bridex]    论坛用户   登录
作者:czy <czy82@elong.com>
主页:http://www.nsfocus.net
日期:2004-03-10

/*
* For x86/EWindows 2k & VC 6
* cl vulnerable_0.c /nologo /Os /G6 /W3 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /link /RELEASE
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma comment( linker, "/INCREMENTAL:NO"    )
#pragma comment( linker, "/subsystem:console" )

int __cdecl main ( int argc, char * argv[] )
{
    unsigned char buf[8];

    if ( 2 != argc )
    {
        fprintf( stderr, "Usage: %s <any string>\n", argv[0] );
        return( EXIT_FAILURE );
    }
    strcpy( buf, argv[1] );
    printf( "%s\n", buf );
    return( EXIT_SUCCESS );
}  /* end of main */


1) 利用监视点定位导致溢出的代码点
先说说如何尽早中断在vulnerable_0.exe进程空间中,然后介绍如何利用监视点
定位导致溢出的代码点。

用VC写的程序一般运行之初都要调用GetCommandLineA这个API我们对它下个断点就可以了多按几下f12以回到应用程序空间。

代如下参数执行我们的程序:

vulnerable_0.exe AAAAAAAAAAAAAAAA  一共16个A
                前8个正常中间4个覆盖ebp,最后四个覆盖eip

打开SOFTICE的Faults on功能。

这时程序出错,SOFTICE弹出"0x41414141" 指令引用的 "0x41414141" 内存。该内存不能为 "read"。这儿注意看ESP寄存器!
esp这时为0012FF88
eip,ebp都为41414141,那么可以肯定本来eip,ebp的值是放在
0012FF84和0012FF80中的!

这个有一个问题就是:现在0012FF78到0012FF88处的16个字节不是41h哟,为什么呢?
我想是系统的seh进行了处理。但在溢出发生之前它们的值肯定是41h,所以下监视点
bpmd 0012FF78 w if ((*0012FF78)==41414141)


再次提醒,bpm断点随进程空间消失而消失,因此应该尽早中断在vulnerable_0.exe
进程空间中,然后设置bpm断点,而不是其它时刻


这时监视点被命中。。
这时代码在
001B:00401161  83C704              ADD      EDI,04
001B:00401163  BAFFFEFE7E          MOV      EDX,7EFEFEFF
001B:004011..  8B01                MOV      EAX,[ECX]
001B:004011..  03D0                ADD      EDX,EAX
... ...
001B:004011..  EBC7                JMP      004011..
001B:004011..  8917                MOV      [EDI],EDX

这时的ebp,eip存放的地方还是正常的,f10走几步
一个leave指令ebp就被覆盖了然后一个ret指令eip也就覆盖。。那么我们就找到了
出错的地方了。

一点点感想:
看了四哥的<利用监视点定位导致溢出的代码点>一文(绿盟月刊44期)
写了这个。个人感觉对于如何快速的找到溢出点还有很多值得大家商榷
和探讨的地方。溢出的种类很多不同的种类都有不同的调试办法,不求
通用,但求对于每一种办法有一个比较正确的思路,而对于这些我人个
脑子里面还很模糊望各位大哥多指点。




另外:icedump没装对。。不能把softice的屏幕内容找出来。。各位不好意思了哈。

地主 发表时间: 04-04-12 11:01

论坛: 黑客进阶

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号