首页
社区
课程
招聘
[原创]我也来发发第一题的解答
发表于: 2010-10-20 18:17 8240

[原创]我也来发发第一题的解答

2010-10-20 18:17
8240

除了该死的堆栈指针没办法,其余基本不用硬编码


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
把.dat一起发上来吧
2010-10-20 18:23
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
5A                  pop     edx
FF72 57         push    dword ptr [edx+57]
B2 CC            mov     dl, 0CC
FFD2              call    edx


可以去掉两个字节
2010-10-20 18:23
0
雪    币: 458
活跃值: (421)
能力值: ( 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]

只能说很厉害。。。。
2010-10-20 18:31
0
雪    币: 205
活跃值: (25)
能力值: ( 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]

这也是一字节硬编码了,本家的思想是尽量不使用硬编码达到完全稳定
2010-10-20 18:32
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
6
+XX 本来就是硬编码啊
2010-10-20 18:34
0
雪    币: 205
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
使用代码段地址来偏移和硬编码地址是两种情况啊,就算是重定位代码段了,这段代码一样能用
2010-10-20 18:39
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
重定位也不影响低位,6C+60=CC,是同一种信息的两种表示
2010-10-20 18:40
0
雪    币: 411
活跃值: (247)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
直接改EDX的低位有可能不正确.
比如EDX本来是001111FF你ADD 60是没问题的,但直接改FF为CC可能就不对了.
当然这题到不存在这个问题就算要进位你这样也可以搞定.
2010-10-20 18:42
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
10
要达到“本家的思想”,这个方式一开始就不对,堆栈地址都保证不了干嘛还设想一个重定位
2010-10-20 18:43
0
雪    币: 205
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
想想貌似有点道理
另外这个push 0是怎么省掉的请指教,貌似堆栈不是干净的
2010-10-20 18:47
0
雪    币: 205
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这个硬编码堆栈地址是出题给的难题,本家也找不到代码段的跳板,只能这样用,能不用坚决不用
2010-10-20 18:49
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
13
同楼主问  forgot 把那个push 0给省了    貌似不行吧。。。
2010-10-20 18:50
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
14
call [edx]的时候[esp]=0啊
2010-10-20 19:00
0
雪    币: 205
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
[QUOTE=forgot;875310]call [edx]的时候[esp]=0啊[/QUOTE]

说的是pop edx吧,已经调试过了,不可能是0
2010-10-20 19:05
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
16
return地址被pop弹出来,下面是0啊,不过没分析过这一块
2010-10-20 19:23
0
雪    币: 3171
活跃值: (76)
能力值: (RANK:250 )
在线值:
发帖
回帖
粉丝
17
针对exploit, 我对避免硬编码的理解是:控制EIP后如何不通过一个栈地址,而是通过寻求类似jmp esp,call ebx这种通用地址而重新定位到shellcode执行。如果直接将堆栈上SHELLCODE地址填到call[EDX],不免会出现堆栈地址的个体差异而导致exploit不成功。针对exploit 的实际运用能通用,达到不弹不卡不闪才是一个好的exploit要追求的。
2010-10-21 08:00
0
游客
登录 | 注册 方可回帖
返回
//