能力值:
( LV9,RANK:610 )
|
-
-
2 楼
把.dat一起发上来吧
|
能力值:
(RANK:1060 )
|
-
-
3 楼
5A pop edx
FF72 57 push dword ptr [edx+57]
B2 CC mov dl, 0CC
FFD2 call edx
可以去掉两个字节
|
能力值:
( LV9,RANK:610 )
|
-
-
4 楼
[QUOTE=forgot;875279]5A pop edx
FF72 57 push dword ptr [edx+57]
B2 CC mov dl, 0CC
FFD2 call edx
可以去掉两个字节...[/QUOTE]
只能说很厉害。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
[QUOTE=forgot;875279]5A pop edx
FF72 57 push dword ptr [edx+57]
B2 CC mov dl, 0CC
FFD2 call edx 可以去掉两个字节...[/QUOTE]
这也是一字节硬编码了,本家的思想是尽量不使用硬编码达到完全稳定
|
能力值:
(RANK:1060 )
|
-
-
6 楼
+XX 本来就是硬编码啊
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
使用代码段地址来偏移和硬编码地址是两种情况啊,就算是重定位代码段了,这段代码一样能用
|
能力值:
(RANK:1060 )
|
-
-
8 楼
重定位也不影响低位,6C+60=CC,是同一种信息的两种表示
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
直接改EDX的低位有可能不正确.
比如EDX本来是001111FF你ADD 60是没问题的,但直接改FF为CC可能就不对了.
当然这题到不存在这个问题就算要进位你这样也可以搞定.
|
能力值:
(RANK:1060 )
|
-
-
10 楼
要达到“本家的思想”,这个方式一开始就不对,堆栈地址都保证不了干嘛还设想一个重定位
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
想想貌似有点道理
另外这个push 0是怎么省掉的请指教,貌似堆栈不是干净的
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
这个硬编码堆栈地址是出题给的难题,本家也找不到代码段的跳板,只能这样用,能不用坚决不用
|
能力值:
( LV9,RANK:610 )
|
-
-
13 楼
同楼主问 forgot 把那个push 0给省了 貌似不行吧。。。
|
能力值:
(RANK:1060 )
|
-
-
14 楼
call [edx]的时候[esp]=0啊
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
[QUOTE=forgot;875310]call [edx]的时候[esp]=0啊[/QUOTE]
说的是pop edx吧,已经调试过了,不可能是0
|
能力值:
(RANK:1060 )
|
-
-
16 楼
return地址被pop弹出来,下面是0啊,不过没分析过这一块
|
能力值:
(RANK:250 )
|
-
-
17 楼
针对exploit, 我对避免硬编码的理解是:控制EIP后如何不通过一个栈地址,而是通过寻求类似jmp esp,call ebx这种通用地址而重新定位到shellcode执行。如果直接将堆栈上SHELLCODE地址填到call[EDX],不免会出现堆栈地址的个体差异而导致exploit不成功。针对exploit 的实际运用能通用,达到不弹不卡不闪才是一个好的exploit要追求的。
|
|
|