码迷,mamicode.com
首页 > 其他好文 > 详细

某安全竞赛题一

时间:2015-06-02 19:52:07      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

前段时间一个比较大的比赛上遇到的两个题目,遂记录一下

运行改程序

 技术分享

该程序开启的端口为12345

技术分享
发送畸形数据包之后程序崩溃,如下图可知,崩溃点发生在函数0x000000000040096b中

技术分享

通过调试发现溢出发生在函数calc的memcpy函数中


技术分享 

溢出之后的堆栈,此时返回地址0x7fffffffc320被覆盖

技术分享 

通过查看即看发现溢出点的偏移为280

技术分享 

构造shellcode发包

技术分享 

内存中收到的shellcode

 技术分享

但是在该题中传入的shellcode会在传入溢出点之前被做加密处理,如下图所示,收取的数据在传入calc前,在函数EncodeBuffer中进行加密。

技术分享 

如下图所示即为处理过的shellcode,这样被传入的shellcode就不会被触发。

 技术分享

但是通过调试发现该处的加密处理是可逆的,即如果传入的是加密处理的shellcode,在服务端如果再进过加密处理,即会还原。

首先发送正常的shellcode

技术分享 

运行之后加密,可以从内存中dump出加密之后的shellcode。

技术分享 

此时再发送加密shellcode即会还原。

技术分享

此时收到的shellcode即为加密shellcode。

 技术分享

双重加密之后还原的shellcode

   技术分享

溢出前的堆栈

 技术分享

溢出后此时返回地址0x7fffffff328被覆盖。

 技术分享

此时eip已可控。

技术分享 

 

技术分享 

                                                                   。。。。。。。。

技术分享 

此题为简单的溢出,但是在溢出前对传入的数据进行了加密,因此需要对传入的shellcode进行编码处理,当是此处的加密函数可逆,因此可以不必去逆向整个加密函数,通过取巧传入加密之后的shellcode即可绕过该处加密。

某安全竞赛题一

标签:

原文地址:http://www.cnblogs.com/goabout2/p/4547106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!