首页
论坛
专栏
课程

[求助]请教各位大佬,控制不了ESP如何构造rop_chain

2019-4-14 20:19 697

[求助]请教各位大佬,控制不了ESP如何构造rop_chain

2019-4-14 20:19
697
UnPackEr:0040E5FF call    sub_40CC30
UnPackEr:0040E604 cmp     eax, 0FFFFFFFFh
UnPackEr:0040E607 jz      short loc_40E686
UnPackEr:0040E609 mov     eax, dword ptr [esp+1Ch+optval]
UnPackEr:0040E60D push    eax                             ; optval
UnPackEr:0040E60E mov     ecx, edi
UnPackEr:0040E610 call    sub_40CD50                      ; TAGS: ['net']
UnPackEr:0040E615 mov     edx, [esi]
UnPackEr:0040E617 push    edi
UnPackEr:0040E618 mov     ecx, esi
UnPackEr:0040E61A call    dword ptr [edx+0Ch]            <----------可控制edx执行代码,但是DEP环境,栈不可执行
UnPackEr:0040E61D mov     ecx, edi
UnPackEr:0040E61F call    sub_40CD00
UnPackEr:0040E624 test    al, al
UnPackEr:0040E626 jz      short loc_40E669
UnPackEr:0040E628 push    edi                             ; int
UnPackEr:0040E629 lea     ecx, [esi+30h]                  ; lpCriticalSection
UnPackEr:0040E62C call    sub_40DEF0
UnPackEr:0040E631 test    al, al

请教一下各位大佬,栈溢出DEP开启,控制了edx,能够进入 call    dword ptr [edx+0Ch],
Mona给的rop_chain使用前提是控制ESP,才能把链条连上,
但是控制不了ESP,怎么构造rop_chain?


[公告]LV6级以上的看雪会员可以免费获得《2019安全开发者峰会》门票一张!!

最新回复 (2)
钞sir 2019-4-14 22:08
2
0
既然都可以栈溢出了,那可不可以覆盖到返回地址呢?如果可以的话,就可以利用ROP了,不一定需要DEP关闭,因为ROP其实没有在栈上面运行代码,只是利用栈上面你自己构造的字符串数据而已......
usual 2019-4-15 06:17
3
0
钞sir 既然都可以栈溢出了,那可不可以覆盖到返回地址呢?如果可以的话,就可以利用ROP了,不一定需要DEP关闭,因为ROP其实没有在栈上面运行代码,只是利用栈上面你自己构造的字符串数据而已......
准确的说缓冲区没溢出,只不过覆盖了一部分栈上的结构体,最近一处能控制EIP的地方距离把buf押进栈的qmemcpy函数很远,跑到能控制EIP的地方,栈顶距离buf将近1GB。
我想了个办法,用ret 20做gadget慢慢往栈底爬,很蠢,不过貌似有效 -。-
游客
登录 | 注册 方可回帖
返回