看雪辞旧迎新exploitme挑战赛B题答题卷.docx
- 文档编号:32344
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:16
- 大小:319.98KB
看雪辞旧迎新exploitme挑战赛B题答题卷.docx
《看雪辞旧迎新exploitme挑战赛B题答题卷.docx》由会员分享,可在线阅读,更多相关《看雪辞旧迎新exploitme挑战赛B题答题卷.docx(16页珍藏版)》请在冰豆网上搜索。
看雪辞旧迎新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浏览器退出,做到”随风潜入夜,润物细无声”.
创新性论证(可选)
暂无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 辞旧迎新 exploitme 挑战赛 答题