看雪辞旧迎新exploitme挑战赛B题答题卷.docx

上传人:b****0 文档编号:32344 上传时间:2022-10-01 格式:DOCX 页数:16 大小:319.98KB
下载 相关 举报
看雪辞旧迎新exploitme挑战赛B题答题卷.docx_第1页
第1页 / 共16页
看雪辞旧迎新exploitme挑战赛B题答题卷.docx_第2页
第2页 / 共16页
看雪辞旧迎新exploitme挑战赛B题答题卷.docx_第3页
第3页 / 共16页
看雪辞旧迎新exploitme挑战赛B题答题卷.docx_第4页
第4页 / 共16页
看雪辞旧迎新exploitme挑战赛B题答题卷.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

看雪辞旧迎新exploitme挑战赛B题答题卷.docx

《看雪辞旧迎新exploitme挑战赛B题答题卷.docx》由会员分享,可在线阅读,更多相关《看雪辞旧迎新exploitme挑战赛B题答题卷.docx(16页珍藏版)》请在冰豆网上搜索。

看雪辞旧迎新exploitme挑战赛B题答题卷.docx

看雪辞旧迎新exploitme挑战赛B题答题卷

看雪辞旧迎新exploitme挑战赛B题答题卷

基本分,共70分

得分点

分值描述

实际得分

漏洞定位

请介绍自己定位漏洞的思路与方法,以及所使用的软件或工具,如自己独立开发工具请注名,20分

漏洞描述及危害分析

通过逆向和调试,分析给出PE文件中的漏洞原理。

给出能够想到的利用此漏洞的所有方法(可以只实现其中一种或几种),给出攻击场景和攻击步骤的描述。

15分

shellcode

请描述shellcode的功能及其中所使用的相关技术,10分

exploit截图

shellcode运行成功时的屏幕截图,10分

稳定性与通用性论证

介绍自己exploit代码中各个关键点的解决方案,从稳定性,通用性两方面进行对exploit进行论证和评价,10分

exploit代码运行

提交的exploit将在XPSP2虚拟机中试运行,用于检验exploit的通用性与稳定性。

如在验证环境下能够通过,得5分

(本项得分可能存在一定随机性,评委会拥有最终裁决权)

加分

加分点

分值描述

实得加分

分析速度加分

本题前五名提交者将获得5分加分。

提交时间按照比赛过程中最后一次编辑修改的时间计算。

shellcode原创加分

shellcode如果是自己独立开发完成,请附上详细的开发文档,并描述其中关键问题的解决方法,根据质量给予最高5分的加分。

若A,B两题使用同样的shellcode,不重复加分。

分析报告文字质量

根据分析报告的行文质量,思路,层次,叙述方式等,发现特别优秀的给出1~3分的加分

整个过程中使用的其他创新性技术

请在分析报告中明确指出,此项加分不定

注意:

比赛结束前,严禁在提交版面以外以任何形式讨论赛题,否则立刻取消资格。

提交者看雪ID:

nop

职业:

(学生、程序员、安全专家、黑客技术爱好者、其他?

IT民工

漏洞定位:

1.先用COMExplorerv2.0的RegisterDLLServer功能在本机注册测试用的activex控件:

2.打开Comraider对该控件进行fuzz:

3.很快就fuzz出其中的一个bug:

 

4.然后选”LaunchinOlly”,在ollydbg中继续分析漏洞.

漏洞描述及危害分析:

接上:

-)

在od中输入atoleaut32.DispCallFunc,定位到DispCallFunc函数,然后在函数体内找到callecx,F2设断点,F9运行.

如上图所示,这样就定位到了存在溢出的LoadPage()方法.

然后,启动IDAPro,分析exploit_me_B.dll,因为我们已经知道导致溢出的是LoadPage方法的第一个参数,所以我们着重跟踪第一个参数的数据流.

最终我们来到这里,紫色标注的部分,函数体内部如下图所示:

如图所示,注释的那段代码是strcpy的inline版本,str_src是由用户提供的,str_dst是栈内临时变量,其大小为256字节,所以只要用户提供(256+4)字节长度的字符串即可导致溢出,溢出buffer可以如下构造:

|str_padding|256字节padding数据

|jmp_addr|跳转地址

因为这个activex溢出是在ie浏览器里发生,所以可以充分利用浏览器环境,而不是采用传统的bounceaddress来跳到我们的shellcode.

这里我们用0x0c0c0c0c作为跳转地址,然后采用heapspray堆喷射技术使得流程落入shellcode中.

另外,因为走到紫色流程的不仅仅只有LoadPage()一个方法,如果进行回溯分析,应可以发现更多存在溢出的控件方法.

 

其他溢出点的分析:

1.DownLoad(URL,filename)

如下图C伪代码所示,分配的堆为固定的516字节,但是两个strcpy(inline)都没有检查用户输入的str_URL和str_filename长度,直接复制入堆中导致后续发生溢出.

因此这个方法两个参数超长都可以导致溢出.

 

2.GetRemoteFileTime(filename)

继续看c伪代码,堆分配的还是516字节,但是对用户输入的str_filename_依然没做长度检查,直接复制入栈导致后续的溢出.

3.SubLoadSifPage(

ByValURLAsString,

ByValxAsLong,

ByValyAsLong,

ByValZoomAsSingle,

ByValPageNumAsLong

看流程图,URL字符串导致溢出的原因还是sub_10015AD0和LoadPage的那个原因一样,不再赘述.

 

4.SubPrint(

ByValURLAsString,

ByValPageNumAsLong,

ByValb2in1AsLong,

ByValisdoublesideAsLong,

ByValZoomAsLong

还是看伪代码,-_-,str_URL_被复制到大小为300字节的堆中,但是没检测用户输入的长度,导致堆溢出,从而导致后续的虚函数调用得到控制.

 

5.SubSetUserAuth(

ByValUserNameAsString,

ByValPasswordAsString

Sub_1001B360是存在问题的函数,看代码,这个是一个类的成员函数,将str_UserName__和str_Password__复制到类实力的数据成员中.可以从图中看出这个类的数据结构:

+0x000|....|<--this

+0x214|UserName|//256字节,见下图绿色部分

+0x314|Password|//估计也为256字节,见下图黄色部分

+0x414|....|

但是这两个inline的strcpy都没有检查用户输入的长度,所以导致堆溢出.

6.SubSetBookAuth(

ByValbookauthAsLong

看这段代码,很搞笑,sub_10013CE0把用户输入的bookauth当做字符串的指针来把字符串复制到类实例里:

+0x000|...|

+0x164|str|//strcpy(obj.str,bookauth_);

没有检测用户输入,照样溢.

 

 

攻击场景和危害分析:

因为这个控件是safe的,所以可以不需要用户交互即可运行恶意代码.在ie浏览器用iframe标签嵌入恶意页面,并骗取用户访问含有恶意页面的网页即可完成攻击.

shellcode描述

请注明shellcode来源:

原创,修改,引用。

原创请给出开发说明

修改请给出修改说明,并注明出处,附加被引用代码

引用请给出功能描述,并注明出处,附加被引用代码

来源:

原创,shellcode代码见附件messagebox.c

功能说明:

弹出MessageBox显示”很女子,很弓虽大,很禾口讠皆!

”窗口.

开发说明:

见shellcode源码,因为此shellcode构建在通用模板上,非常简单.

exploit运行截图

测试代码:

附件exploit_me_B_LoadPage().html,其他的不测试了,雷同.

 

稳定性与通用性论证

通用性:

因为采用heapspray,所以覆盖returneip的地址选取在堆中,通用性更好,可以不依赖于操作系统的语言版本和版本号,只与是否使用ie内核浏览器有关.

稳定性:

目前在shellcode中采用的是ExitProcess()退出ie浏览器,需要改进就是能使溢出不导致ie浏览器退出,做到”随风潜入夜,润物细无声”.

创新性论证(可选)

暂无

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1