首页
论坛
课程
招聘
[原创] 30 B & 29B 的
2010-10-20 19:03 9100

[原创] 30 B & 29B 的

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

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

看雪2022 KCTF 秋季赛 防守篇规则,征题截止日期11月12日!(iPhone 14等你拿!)

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

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

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

发哥的虽然26的  但是我这里弹出字符串错误。
到现在为止  你这个是最优解啊
雪    币: 199
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rickywong 活跃值 2010-10-20 19:15
5
0
改了两处堆栈指针,跑了一下,报错了,可能是call跳转的地址不正确
雪    币: 83
活跃值: 活跃值 (27)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
instruder 活跃值 4 2010-10-20 19:17
6
0
我的栈段是0x13***的,
因此****没框框
雪    币: 379
活跃值: 活跃值 (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
blackwhite 活跃值 1 2010-10-20 19:20
7
0
跳转不是想的那么好找.因为是CALL [EDX]
找到适合的指令还得有个可仿问的地址中存放了这个指令所在的址址.
雪    币: 5536
活跃值: 活跃值 (56)
能力值: (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
膜拜啊膜拜,感谢分享。
雪    币: 295
活跃值: 活跃值 (150)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
blueapplez 活跃值 14 2010-10-20 20:00
11
0
只能膜拜。。。
0012FCC7    E8 00152D00     CALL ExploitM.004011CC

这样就29字节了    做好后补上。
雪    币: 3133
活跃值: 活跃值 (26)
能力值: (RANK:250 )
在线值:
发帖
回帖
粉丝
snowdbg 活跃值 6 2010-10-20 20:04
12
0
我分析了下程序,感觉这个题 其实主要是考汇编功底的,它的不是一个堆溢出漏洞。而是精心构造的一个覆盖而已。
雪    币: 667
活跃值: 活跃值 (56)
能力值: ( 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指令的可访问的稳定的地址却要碰运气。
雪    币: 396
活跃值: 活跃值 (13)
能力值: ( 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。。。
雪    币: 396
活跃值: 活跃值 (13)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
踏雪流云 活跃值 1 2010-10-21 10:06
15
0
膜拜大牛~~~
雪    币: 2273
活跃值: 活跃值 (25)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
北极狐狸 活跃值 7 2010-10-21 10:23
16
0
我想大概也就只能这样子了。我在内存中找了很久也没有找到要用到的字符串。偶然间找到字符串,也是其他程序影响的。做大到传说中的20字节以内。而且即使这样做根本不算合格,鬼知道测试文件的机器的状况是什么样的。

顺便讲一下啊, 太虚伪了 说只用八个字节 当时我就傻了, 一个edx值 一个函数地址,也要6个字节吧。两个字节其他的事情就都干完了。计算机技术果然强悍。难道内存中已经编号好码,直接跳过去就o了?哎,终于发现我被骗了
雪    币: 219
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
glery 活跃值 2 2010-10-21 10:28
17
0
又是大开眼界,膜拜
雪    币: 47
活跃值: 活跃值 (43)
能力值: ( 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啥的要归档备用。
游客
登录 | 注册 方可回帖
返回