1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| import tornado.ioloop, tornado.web, tornado.options, os
settings = {'static_path': os.path.join(os.getcwd(), 'static')}
class IndexHandler(tornado.web.RequestHandler):
def get(self): self.render("static/index.html")
def post(self): if len(tornado.web.RequestHandler._template_loaders): for i in tornado.web.RequestHandler._template_loaders: tornado.web.RequestHandler._template_loaders[i].reset() msg = self.get_argument('tornado', '龙卷风摧毁停车场') black_func = ['eval', 'os', 'chr', 'class', 'compile', 'dir', 'exec', 'filter', 'attr', 'globals', 'help', 'input', 'local', 'memoryview', 'open', 'print', 'property', 'reload', 'object', 'reduce', 'repr', 'method', 'super', "flag", "file", "decode","request","builtins","|","&"] black_symbol = ["__", "'", '"', "$", "*", ",", ".","\\","0x","0o","/","+","*"] black_keyword = ['or', 'while'] black_rce = ['render', 'module', 'include','if', 'extends', 'set', 'raw', 'try', 'except', 'else', 'finally', 'while', 'for', 'from', 'import', 'apply',"True","False"] if(len(msg)>1500) : self.render('static/hack.html') return bans = black_func + black_symbol + black_keyword + black_rce for ban in bans: if ban in msg: self.render('static/hack.html') return with open('static/user.html', 'w') as (f): f.write( '<html><head><title></title></head><body><center><h1>你使用 %s 摧毁了tornado</h1></center></body></html>\n' % msg) f.flush() self.render('static/user.html') if tornado.web.RequestHandler._template_loaders: for i in tornado.web.RequestHandler._template_loaders: tornado.web.RequestHandler._template_loaders[i].reset()
def make_app(): return tornado.web.Application([('/', IndexHandler)], **settings)
if __name__ == '__main__': app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() print('start')
|