var flag = "REDACTED"; var fs = require('fs'); var express = require('express'); var app = express(); app.listen(8080); app.get('/', function(req, res){ reply(res, ""); }); function reply(res, text){ fs.readFile('lol.js', function(err, data){ if(text) text = text + "\n\n---\n\n"; res.header("Content-Type", "text/plain"); res.send(text + (data + '').replace(flag, "REDACTED")); }); } /* * Usage: https://loljs.hamclock.net/x/y/z */ function getFlag(x, y, z){ var lolarray = [-Infinity, -1, 0, 1, Infinity]; x = lolarray[x]; if(Math.max(-1, x) != Math.max(-1, x) && x == x && !isFinite(x) && y == true && y == 1 && y !== 1 && 'hello'.charAt(z) != 'hello'[z] && z != true && Math.max(z, null) === 0 ) return "FLAG = " + flag; else return "Try again."; } app.get('/:x/:y/:z', function(req, res){ try{ var x = JSON.parse(req.params.x); var y = JSON.parse(req.params.y); var z = JSON.parse(req.params.z); reply(res, getFlag(x, y, z)); }catch(e){ reply(res, "JSON parse error"); } });