fork download
  1. import java.util.regex.*;
  2.  
  3.  
  4. public class Main
  5. {
  6. public static void main(String[] args) throws Exception
  7. {
  8. Pattern p = Pattern.compile(
  9. "^/exec\\?(?:(?:(?!\\1)command=shutdown()|(?!command\\b)\\w+(?:=[^&]+)?)(?:&|$))+$\\1"
  10. );
  11. Matcher m = p.matcher("");
  12.  
  13. String[] inputs = {
  14. "/exec?debug=true&command=shutdown&f=0",
  15. "/exec?commando=yes&zcommand=34&command=shutdown&p",
  16. "/exec?version=0.4&command=shutdown&out=JSON&zcommand=1",
  17. "/exec?command=shutdown&out=JSON",
  18. "/exec?version=0.4&command=startup&out=JSON&zcommand=1&commando=shutdown",
  19. "/exec?version=0.4&command=admin&out=JSON&zcommand=1&command=shutdown",
  20. "/exec?version=0.4&command=shutdown&out=JSON&zcommand=1&command=shutdown"
  21. };
  22.  
  23. for (String s : inputs)
  24. {
  25. System.out.printf( "%n%s%n=>%s%n", s, m.reset(s).find() );
  26. }
  27. }
  28. }
Success #stdin #stdout 0.04s 245632KB
stdin
Standard input is empty
stdout
/exec?debug=true&command=shutdown&f=0
=>true

/exec?commando=yes&zcommand=34&command=shutdown&p
=>true

/exec?version=0.4&command=shutdown&out=JSON&zcommand=1
=>true

/exec?command=shutdown&out=JSON
=>true

/exec?version=0.4&command=startup&out=JSON&zcommand=1&commando=shutdown
=>false

/exec?version=0.4&command=admin&out=JSON&zcommand=1&command=shutdown
=>false

/exec?version=0.4&command=shutdown&out=JSON&zcommand=1&command=shutdown
=>false