2010年西电攻防exploit 01题解
来源:互联网 发布:python正则表达式符号 编辑:程序博客网 时间:2024/05/19 16:35
拿到这个题首先运行了一下,弹出了一个窗口,点确定就结束了,
要想输入产生溢出,显然要从它生成的exploit.dat入手。
在exploit.dat中输入了很长的”1111…”,然后又运行了程序,没有任何问题发生,看来要用OD分析汇编代码了。跟着代码单步调试,看到了如下图
如果没有exploit.dat,程序则创建了exploit.dat,判断文件大小,如果高于0x200,则直接跳到最后,跳过了读文件这一步,看来构造的字符串要小于0x200,本着越长越可能发生溢出的想法,那我就输入200个‘1‘,可还是什么事情也没发生。那就接着分析程序,F8走啊走,走到了这一步,让我看到了希望,
在一个不起眼的夹缝里还有一条判断文件大小的语句,如果高于0x84同样跳转,原来是这样,那我把文件里的‘1‘减去许多后运行发现程序还是正常的跑,当我把‘1’增加到81个时,出现了下图
说明我覆盖了程序中的指令,终于找到了可以干扰程序的点了,于是仔细分析代码,
通过ReadFile函数将数据读入buffer中,然后将buffer内容写入内存,如图
然后又将该数据写入栈地址为18fc40处,而在18fcc0处则存放着指向MessageBoxA地址的地址,如果输入数据大于0x80,则该地址被覆盖,找到了覆盖点就可以构造shellcode了,
由于覆盖的内容是地址的地址,所以最后三个字节是shellcode入口地址的地址,
最后三个字符覆盖地址,获得程序执行权后指向shellcode开头的0018fc44,0018fc44指向其下一条,这之后便是真正的shellocde,弹出一个对话框,
33DB xor ebx,ebx
53 push ebx
6865737300 push 'ess'
6873756363 push 'succ'
686F697420 push 'oit '
684578706C push 'Expl'
8BC4 mov eax,esp
53 push ebx
50 push eax
50 push eax
53 push ebx
B8AEFEB576 push eax 0x40116c
FFD0 call eax
83C414 add esp,0x14 //维持栈平衡
C3 retn
这是程序执行时的shellcode,设计这个shellocde时考虑如何获得这个MessageBoxA的地址,0x84的空间放不下动态获得API函数的shellcode,正好在程序中是通过动态方式获得的函数地址,并且把该地址存入了内存中,就是这个0x408514这个位置,正好拿来用喽。
再次运行程序,就出来了题目要求的形式。
- 2010年西电攻防exploit 01题解
- 2013西电攻防exploit第四题题解
- 2010西电攻防exploit第6题
- exploit
- exploit
- Exploit
- Exploit
- spring cve-2010-1622 exploit
- 木马攻防 01
- 2012西电攻防溢出第三题题解
- 西电攻防2010溢出第四题
- Rising AntiVirus 2008/2009/2010 Local Privilege Escalation Exploit
- Heap Spray Exploit : CVE-2010-0249 Use After Free 初探
- Root exploit for Android and Linux(CVE-2010-4258)
- LOCAL SOLARIS KERNEL ROOT EXPLOIT (< 5.10 138888-01)
- VBS.Exploit
- ani exploit
- 什么是exploit
- Ubuntu下LDAP和OpenStack Keystone安装集成小结
- PGA与SGA的区别,PGA的功能介绍
- UIWebView的点击事件
- wince api
- jQuery Callback 函数
- 2010年西电攻防exploit 01题解
- 服务器新建用户
- poj 1018 Communication System (枚举+贪心)
- EJB到底是什么,真的那么神秘吗??
- for循环语句头的执行顺序
- Java动态给类中配置常量赋值的三种方法
- LINUX SSH JAIL[笼环境]安装与配置
- GenericServlet中的service 方法
- 单词博弈解题思路,转载“miss若尘”的博客