#!/usr/bin/env python from wsgiref.simple_server import make_server from cgi import parse_qs, escape html = """ Python Vulnerable Code

Name:

Hobbies: Vulnerability Research Web Application Research

Name: %s
Hobbies: %s

""" def application(environ, start_response): # Returns a dictionary containing lists as values. d = parse_qs(environ['QUERY_STRING']) # In this idiom you must issue a list containing a default value. name = d.get('name', [''])[0] # Returns the first name value. hobbies = d.get('hobbies', []) # Returns a list of hobbies if applied. response_body = html % (name or 'Empty', ', '.join(hobbies or ['No Hobbies, you probably need one!'])) status = '200 OK' # Now content type is text/html response_headers = [('Content-Type', 'text/html'), ('Content-Length', str(len(response_body)))] start_response(status, response_headers) return [response_body] httpd = make_server('localhost', 8051, application) # Now it is serve_forever() in instead of handle_request(). # In Windows you can kill it in the Task Manager (python.exe). # In Linux a Ctrl-C will do it. httpd.serve_forever()