首页
社区
课程
招聘
[原创] 30 B & 29B 的
2010-10-20 19:03 9887

[原创] 30 B & 29B 的

2010-10-20 19:03
9887
。。。。。。。。。。。。。。

ps,这里说一下
有些机器的堆栈地址是 0x0012****(我的机器就是)
而有的机器是 0x0013****(是这个段的机器   只需修改最开始和最末尾的 12-> 13即可)

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

上传的附件:
收藏
点赞6
打赏
分享
最新回复 (17)
雪    币: 338
活跃值: (103)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
kkmylove 2 2010-10-20 19:12
2
0
把压入success和代码和跳转到call MessageBoxW的代码结合在一起了 我咋没想到呢 学习了
雪    币: 202
活跃值: (58)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
egogg 9 2010-10-20 19:14
3
0
唉,要是我是裁判,一定把那些用硬编码跳转的全部咔嚓掉。我机器的栈地址是13打头的。

找一个稳定的跳板应该是第一要素吧,我拿了题目还在想怎么编程找跳板呢,这边答案都全出来了。悲剧!

不知道谁找到非栈地址的跳板没有,就是那种地址中的数据是指向跳转指令地址的地址,而且至少能跳8条指令以上的。
add esp, xx
...
ret
之类的。shellcode大小有什么好研究的。找跳板才是正事。
雪    币: 358
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
疯子鱼 2010-10-20 19:15
4
0
你这个 很稳定啊

发哥的虽然26的  但是我这里弹出字符串错误。
到现在为止  你这个是最优解啊
雪    币: 205
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rickywong 2010-10-20 19:15
5
0
改了两处堆栈指针,跑了一下,报错了,可能是call跳转的地址不正确
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
instruder 4 2010-10-20 19:17
6
0
我的栈段是0x13***的,
因此****没框框
雪    币: 411
活跃值: (247)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
blackwhite 1 2010-10-20 19:20
7
0
跳转不是想的那么好找.因为是CALL [EDX]
找到适合的指令还得有个可仿问的地址中存放了这个指令所在的址址.
雪    币: 6073
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2010-10-20 19:22
8
0
往后挪一下就29了
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lookk 2010-10-20 19:43
9
0
CALL [EDX]

找到跳板了没 ?
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jerrynpc 2010-10-20 19:52
10
0
膜拜啊膜拜,感谢分享。
雪    币: 454
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
blueapplez 14 2010-10-20 20:00
11
0
只能膜拜。。。
0012FCC7    E8 00152D00     CALL ExploitM.004011CC

这样就29字节了    做好后补上。
雪    币: 3171
活跃值: (71)
能力值: (RANK:250 )
在线值:
发帖
回帖
粉丝
snowdbg 6 2010-10-20 20:04
12
0
我分析了下程序,感觉这个题 其实主要是考汇编功底的,它的不是一个堆溢出漏洞。而是精心构造的一个覆盖而已。
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
轩辕小聪 7 2010-10-21 00:38
13
0
[QUOTE=blackwhite;875342]跳转不是想的那么好找.因为是CALL [EDX]
找到适合的指令还得有个可仿问的地址中存放了这个指令所在的址址.[/QUOTE]
我也觉得这个才头痛。
比如USP10.dll里有好几处指令是add esp, 28h retn XX的格式。call [edx]进入时[esp+28h]处刚好是原exploitme.dat内容的第一个DWORD处(当然这里add esp, xxh这个xx还可以大于28h),在这个用于retn的位置放置一条jmp esp指令的地址的话,就可以通过这样的连跳跳到栈中exploitme.dat内容中执行。然而要找到一个存放了前面这个add esp xxh指令的可访问的稳定的地址却要碰运气。
雪    币: 440
活跃值: (119)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
踏雪流云 1 2010-10-21 10:05
14
0
学习了,呵呵;我咋就没想到利用Call来将“Exploit success”字符串压栈呢,巧妙~~~
我的是:
0012FCA8    6A 00               push    0
0012FCAA    68 6C604000         push    40606C                           ; UNICODE "ExploitMe"
0012FCAF    68 78FC1200         push    12FC78                           ; UNICODE "Exploit success"
0012FCB4  - E9 13152D00         jmp     ExploitM.004011CC

多了4byte。。。
雪    币: 440
活跃值: (119)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
踏雪流云 1 2010-10-21 10:06
15
0
膜拜大牛~~~
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
北极狐狸 7 2010-10-21 10:23
16
0
我想大概也就只能这样子了。我在内存中找了很久也没有找到要用到的字符串。偶然间找到字符串,也是其他程序影响的。做大到传说中的20字节以内。而且即使这样做根本不算合格,鬼知道测试文件的机器的状况是什么样的。

顺便讲一下啊, 太虚伪了 说只用八个字节 当时我就傻了, 一个edx值 一个函数地址,也要6个字节吧。两个字节其他的事情就都干完了。计算机技术果然强悍。难道内存中已经编号好码,直接跳过去就o了?哎,终于发现我被骗了
雪    币: 233
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
glery 2 2010-10-21 10:28
17
0
又是大开眼界,膜拜
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
nkspark 3 2010-10-21 14:34
18
0
[QUOTE=轩辕小聪;875580]我也觉得这个才头痛。
比如USP10.dll里有好几处指令是add esp, 28h retn XX的格式。call [edx]进入时[esp+28h]处刚好是原exploitme.dat内容的第一个DWORD处(当然这里add esp, xxh这个xx还可以大于28h),在这个用于retn的位置...[/QUOTE]

这是正解。看来要靠平时的细心和积累了。jmp esp,jmp ecx啥的要归档备用。
游客
登录 | 注册 方可回帖
返回