Guest User

Untitled

a guest
Jun 1st, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.37 KB | None | 0 0
  1. Decompilers online
  2. File Name: Examen.class, Done.
  3.  
  4. Java decompilers
  5. APK decompiler
  6. ApkTool online
  7. Download Jad
  8.  
  9.  
  10. Decompilation Results
  11.  
  12. Decompilation Results
  13. File Name: Examen.class
  14.  
  15. Decompiler: JDCore
  16.  
  17. Job status: Done.
  18.  
  19.  
  20.  
  21. Save
  22. Twitter Facebook Google+ Stumbleupon LinkedIn
  23.  
  24.  
  25.  
  26. Examen.class
  27. package org.owasp.webgoat.lessons;
  28.  
  29. import java.io.IOException;
  30. import java.io.PrintStream;
  31. import java.sql.Connection;
  32. import java.sql.PreparedStatement;
  33. import java.sql.ResultSet;
  34. import java.sql.ResultSetMetaData;
  35. import java.sql.SQLException;
  36. import java.sql.Statement;
  37. import java.util.ArrayList;
  38. import java.util.List;
  39. import java.util.regex.Matcher;
  40. import java.util.regex.Pattern;
  41. import javax.servlet.http.Cookie;
  42. import javax.servlet.http.HttpServletResponse;
  43. import org.apache.ecs.Element;
  44. import org.apache.ecs.ElementContainer;
  45. import org.apache.ecs.StringElement;
  46. import org.apache.ecs.html.A;
  47. import org.apache.ecs.html.B;
  48. import org.apache.ecs.html.Div;
  49. import org.apache.ecs.html.HR;
  50. import org.apache.ecs.html.Input;
  51. import org.apache.ecs.html.P;
  52. import org.apache.ecs.html.TD;
  53. import org.apache.ecs.html.TR;
  54. import org.apache.ecs.html.Table;
  55. import org.apache.ecs.html.TextArea;
  56. import org.owasp.webgoat.session.DatabaseUtilities;
  57. import org.owasp.webgoat.session.ECSFactory;
  58. import org.owasp.webgoat.session.ParameterParser;
  59. import org.owasp.webgoat.session.WebSession;
  60. import org.owasp.webgoat.util.HtmlEncoder;
  61. import sun.misc.BASE64Decoder;
  62. import sun.misc.BASE64Encoder;
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96. public class Examen
  97. extends LessonAdapter
  98. {
  99. public static final A HOWEST_LOGO = new A().setHref("http://www.howest.be")
  100. .addElement("");
  101.  
  102. private String accountName;
  103. private String accountPass;
  104. private String Credits;
  105. private String Smiley = null;
  106. private boolean isAuth = false;
  107. private boolean isPremium = false;
  108.  
  109. private static String MESSAGE = "message";
  110. private static int MESSAGE_COL = 3;
  111. private static String NUMBER = "Num";
  112. private static int NUM_COL = 1;
  113. private static String TITLE = "title";
  114. private static int TITLE_COL = 2;
  115. private static int count = 1;
  116. private static int USER_COL = 4;
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. private String regexdisabledaccounts = "student|prettige_vakantie";
  125.  
  126. private Pattern patterndisabledaccounts;
  127. private int is_escalated_admin = -1;
  128. private int backdoor_count = 0;
  129.  
  130. public static final String account_table = "pen_account_table";
  131.  
  132. public static final String admin_pass = "w007-89";
  133. public static final String code1 = "L4s3R-07";
  134. public static final String code2 = "D0min4t10N-36";
  135. public static final String code3 = "G0Ld-47";
  136. public static final String code4 = "3xPL0re-22";
  137. public static final String code5 = "Dr.N0-01";
  138. public static final String code6 = "B0nD-07";
  139. public String success_code = "";
  140.  
  141.  
  142. private static BASE64Decoder base64decoder = new BASE64Decoder();
  143. private static BASE64Encoder base64encoder = new BASE64Encoder();
  144.  
  145.  
  146.  
  147.  
  148.  
  149. private static int credits_threshold = -1;
  150. private static int credits_upgrade = 500;
  151.  
  152.  
  153. private static int leet_shop_credits = 654321;
  154. private static String leet_shop_item = "Huur Preben in als superman";
  155.  
  156.  
  157. private static boolean allow_script = false;
  158. private static boolean allow_sqli = false;
  159.  
  160.  
  161. private static int additional_accounts = 0;
  162. private static boolean check_empty_accounts = true;
  163.  
  164.  
  165. private static String[] ACCT = {
  166. "id", "gebruikerid", "gebruiker_id", "user_id", "userid",
  167. "login", "user", "name",
  168. "paswoord", "pass", "password", "passphrase", "secret",
  169. "admin_access", "is_admin", "has_admin", "is_root", "beheerder", "super", "is_super",
  170. "notitie", "note", "info",
  171. "email", "mail", "email_address", "address", "contact",
  172. "is_premium",
  173. "pen_accounts", "exam_data", "pen_exam", "tbl_account", "prism", "geheime_tabel", "defcon", "prettige_vakantie", "bijna_s3" };
  174.  
  175. private static final int ACCT_ID = 4;
  176.  
  177. private static final int ACCT_NAME = 7;
  178.  
  179. private static final int ACCT_PASS = 9;
  180.  
  181. private static final int ACCT_IS_ADMIN = 13;
  182. private static final int ACCT_IS_PREMIUM = 28;
  183. private static final int ACCT_NOTITIE = 22;
  184. private static final int ACCT_EMAIL = 23;
  185. private static final int ACCT_TABLE = 35;
  186. private static String[][] codes = {
  187. { "r00t", "K1dd13", "EeeV1ll", "N000bie", "H4XZ", "OOOwned", "W00T", "D3fC0n" },
  188. { "an0nym0us", "H4X0R", "N00b", "W00T", "K1dd1e", "R00T3d", "PWN3D", "BruC0n" },
  189. { "wh1teh4t", "3V1L", "r00T", "N00B", "1337", "sk1LLz", "0WN3D", "L4sV3g4z" },
  190. { "bl4CKh4t", "M1gh7y", "P0w3R", "4n4rchy", "31337", "n1md4", "H4xZ", "P4ss3d" },
  191. { "PWN3D", "R00T3d", "an0nym0us", "K1dd1e", "W00T", "N00b", "H4X0R", "Y0u Rul3" },
  192. { "0WN3D", "sk1LLz", "1337", "N00B", "r00T", "3V1L", "wh1teh4t", "D1ploma", "W0rlD+D0g" },
  193. { "4DM1N", "31337", "4n4rchy", "P0w3R", "r00t", "H4X0RZ", "GR3YH47", "D3fC0n" },
  194. { "r00t", "H4X0R", "N00b", "W00T", "K1dd1e", "R00T3d", "PWN3D", "BruC0n" },
  195. { "an0nyM0us", "3V1L", "r00T", "N00B", "1337", "sk1LLz", "0WN3D", "L4sV3g4z" },
  196. { "wh1teh4t", "M1gh7y", "P0w3R", "4n4rchy", "31337", "n1md4", "H4xZ", "Y0u Rul3" },
  197. { "bl4CKh4t", "R00T3d", "an0nym0us", "K1dd1e", "W00T", "N00b", "H4X0R", "W0rlD+D0g" },
  198. { "PWN3D", "sk1LLz", "1337", "N00B", "r00T", "3V1L", "wh1teh4t", "D3fC0n" },
  199. { "0WN3D", "31337", "4n4rchy", "P0w3R", "r00t", "H4X0RZ", "GR3YH47", "Y0u Rul3" },
  200. { "4DM1N", "K1dd13", "EeeV1ll", "N000bie", "H4XZ", "OOOwned", "W00T", "P4ss3d" },
  201. { "r00t", "K1dd13", "EeeV1ll", "H4XZ", "N000bie", "OOOwned", "W00T", "D3fC0n" },
  202. { "an0nym0us", "H4X0R", "N00b", "K1dd1e", "W00T", "R00T3d", "PWN3D", "BruC0n" },
  203. { "wh1teh4t", "3V1L", "r00T", "1337", "N00B", "sk1LLz", "0WN3D", "L4sV3g4z" },
  204. { "bl4CKh4t", "M1gh7y", "P0w3R", "31337", "4n4rchy", "n1md4", "H4xZ", "P4ss3d" },
  205. { "PWN3D", "R00T3d", "an0nym0us", "W00T", "K1dd1e", "N00b", "H4X0R", "Y0u Rul3" },
  206. { "0WN3D", "sk1LLz", "1337", "N00B", "3V1L", "r00T", "wh1teh4t", "D1ploma", "W0rlD+D0g" },
  207. { "4DM1N", "31337", "4n4rchy", "r00t", "P0w3R", "H4X0RZ", "GR3YH47", "D3fC0n" },
  208. { "r00t", "H4X0R", "N00b", "K1dd1e", "W00T", "R00T3d", "PWN3D", "BruC0n" },
  209. { "an0nyM0us", "3V1L", "r00T", "1337", "N00B", "sk1LLz", "0WN3D", "L4sV3g4z" },
  210. { "wh1teh4t", "M1gh7y", "P0w3R", "31337", "4n4rchy", "n1md4", "H4xZ", "Y0u Rul3" },
  211. { "bl4CKh4t", "R00T3d", "an0nym0us", "W00T", "K1dd1e", "N00b", "H4X0R", "W0rlD+D0g" },
  212. { "PWN3D", "sk1LLz", "1337", "r00T", "N00B", "3V1L", "wh1teh4t", "D3fC0n" },
  213. { "0WN3D", "31337", "4n4rchy", "r00t", "P0w3R", "H4X0RZ", "GR3YH47", "Y0u Rul3" },
  214. { "4DM1N", "K1dd13", "EeeV1ll", "H4XZ", "N000bie", "OOOwned", "W00T", "P4ss3d" } };
  215.  
  216. private static final String ACCT_ADMIN = "lector";
  217.  
  218. private static final String ACCT_USER = "student";
  219.  
  220. private static final String ACCT_THIRD = "tweedezit";
  221.  
  222. private static final String ACCT_BACKDOOR_USER = "disabled";
  223. private static final String ACCT_BACKDOOR_PASS = "wortel";
  224. private static final String BERICHT = "prettige_vakantie";
  225.  
  226. public Examen() {}
  227.  
  228. protected Element createContent(WebSession s)
  229. {
  230. ElementContainer ec = new ElementContainer();
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237. try
  238. {
  239. Connection connection = DatabaseUtilities.getConnection(s);
  240.  
  241. Statement statement = connection.createStatement(1004,
  242. 1007);
  243.  
  244. try
  245. {
  246. statement.executeQuery(Query("*", ACCT[35], ""));
  247. } catch (SQLException sqle) {
  248. createLoginDataTable(connection);
  249. createPremiumContents(connection);
  250. }
  251.  
  252. patterndisabledaccounts = Pattern.compile(regexdisabledaccounts);
  253. is_escalated_admin = IsAdmin(connection, "student");
  254. backdoor_count = GetCountUser(connection, "disabled", "wortel");
  255.  
  256. Solution(s);
  257.  
  258.  
  259.  
  260. if (!isAuth) {
  261. accountName = s.getParser().getRawParameter(ACCT[7], "");
  262. accountPass = s.getParser().getRawParameter(ACCT[9], "");
  263. if (IsSQLi(accountName)) {
  264. s.setMessage("SQL injectie gedetecteerd! Probeer nog eens :-p");
  265. accountName = "";
  266. }
  267. if (IsSQLi(accountPass)) {
  268. s.setMessage("SQL injectie gedetecteerd! Probeer nog eens :-p");
  269. accountPass = "";
  270. }
  271. }
  272.  
  273.  
  274. Credits = Decode(s.getCookie("credits"));
  275. if ((Credits == null) || (Credits.isEmpty())) {
  276. Credits = "0";
  277. }
  278.  
  279.  
  280. Smiley = s.getCookie("smiley");
  281.  
  282.  
  283. if (isAuth)
  284. {
  285. String Action = s.getParser().getRawParameter("SUBMIT", "");
  286.  
  287.  
  288. if (Action.equals("Aanpassen"))
  289. {
  290. try {
  291. String is_admin = s.getParser().getRawParameter(ACCT[13], "");
  292. String email = s.getParser().getRawParameter(ACCT[23], "");
  293. String notitie = s.getParser().getRawParameter(ACCT[22], "");
  294. String SQL = "UPDATE " + ACCT[35] + " SET " + ACCT[9] + "='" + s.getParser().getRawParameter(ACCT[9], "") + "'";
  295. if (!notitie.equals("")) {
  296. SQL = SQL + ", " + ACCT[22] + "='" + notitie + "'";
  297. }
  298. if (!email.equals("")) {
  299. SQL = SQL + ", " + ACCT[23] + "='" + email + "'";
  300. }
  301. if (!is_admin.equals("")) {
  302. SQL = SQL + ", " + ACCT[13] + "=" + is_admin;
  303. }
  304. SQL = SQL + " WHERE " + ACCT[7] + "='" + accountName + "'";
  305. ResultSet results = statement.executeQuery(SQL);
  306. AddCredits(2);
  307. }
  308. catch (SQLException sqle) {
  309. ec.addElement(new P().addElement(sqle.getMessage()));
  310. sqle.printStackTrace();
  311. }
  312.  
  313. }
  314. else if ((Action.equals("Upgrade")) && (credits_upgrade > 0)) {
  315. String SQL = "UPDATE " + ACCT[35] + " SET " + ACCT[28] + "=1";
  316. SQL = SQL + " WHERE " + ACCT[7] + "='" + accountName + "'";
  317. ResultSet results = statement.executeQuery(SQL);
  318. AddCredits(-1 * credits_upgrade);
  319. isPremium = true;
  320.  
  321. s.setMessage("Tof! Je hebt nu een Premium account. Kijk gerust eens in onze Premium Shop.");
  322.  
  323. }
  324. else if ((Action.equals("Koop")) && (credits_upgrade > 0)) {
  325. String item = s.getParser().getRawParameter("Koop", "");
  326.  
  327. s.setMessage("Bedankt! U hebt een " + item + " aangekocht.");
  328. int bedrag = GetPremiumBedrag(item, s);
  329. AddCredits(-1 * bedrag);
  330.  
  331. }
  332. else if (Action.equals("Uitloggen")) {
  333. isAuth = false;
  334. isPremium = false;
  335. accountName = "";
  336. accountPass = "";
  337. }
  338. }
  339.  
  340. if ((!isAuth) && (accountName.equals("")))
  341. {
  342. ec.addElement(ToonLogin(s));
  343. }
  344. else
  345. {
  346. String query = Query("*", ACCT[35], ACCT[7] + " = '" + accountName + "' AND " + ACCT[9] + " = '" + accountPass + "'");
  347.  
  348. try
  349. {
  350. ResultSet results = statement.executeQuery(query);
  351.  
  352. if ((results != null) && (results.first()))
  353. {
  354.  
  355. accountName = results.getString(ACCT[7]);
  356. accountPass = results.getString(ACCT[9]);
  357. isPremium = results.getBoolean(ACCT[28]);
  358.  
  359.  
  360. if ((!isAuth) && (patterndisabledaccounts.matcher(accountName).matches()))
  361. {
  362. s.setMessage("Proficiat! U bent nu ingelogd als gebruiker " + accountName + ".<br> Schrijf volgende code op het antwoordblad: " + GetCode(1));
  363. success_code = " L4s3R-07";
  364. }
  365.  
  366.  
  367. isAuth = true;
  368.  
  369.  
  370. if ((isPremium) && (Smiley != null)) {
  371. ec.addElement("<div align=\"center\" style=\"font-size: 20px;\">" + Smiley + "</div>");
  372. }
  373.  
  374. if (isPremium) {
  375. ec.addElement("<h1>Premium Shop</h1>");
  376.  
  377. ec.addElement("<form method=GET action=\"?\">");
  378. ec.addElement(ToonPremiumShop(s, GetTotalCredits()));
  379. ec.addElement("</form>");
  380. }
  381.  
  382.  
  383. addMessage(s);
  384. ec.addElement("<br/><br/>");
  385. ec.addElement("<h1>Berichten</h1>");
  386. ec.addElement(ShowMessages(s));
  387. ec.addElement(new HR());
  388. ec.addElement(makeCurrent(s));
  389. ec.addElement(new HR());
  390. ec.addElement(ShowAddMessage(s));
  391. ec.addElement(new HR());
  392. ec.addElement("</form>");
  393.  
  394.  
  395. ResultSetMetaData resultsMetaData = results.getMetaData();
  396. ec.addElement("<br/><br/>");
  397. ec.addElement("<h1>Uw profiel</h1>");
  398. ec.addElement("<form method=GET action=\"?\">");
  399. ec.addElement(ToonProfiel(s, results, resultsMetaData));
  400. Input b = (Input)ECSFactory.makeButton("Aanpassen");
  401. ec.addElement(b);
  402. b = (Input)ECSFactory.makeButton("Uitloggen");
  403. ec.addElement(b);
  404. ec.addElement(new HR());
  405.  
  406.  
  407. ec.addElement("<br/><br/>");
  408. ec.addElement("<h1>Uw krediet</h1>");
  409. ec.addElement(ToonCredits(s, Credits));
  410. Cookie k = new Cookie("credits", Encode(Credits));
  411. s.getResponse().addCookie(k);
  412.  
  413.  
  414. }
  415. else
  416. {
  417.  
  418.  
  419. isAuth = false;
  420. ec.addElement(ToonLogin(s));
  421. ec.addElement("<br><br>Ongeldige login. Probeer opnieuw.");
  422. }
  423. } catch (SQLException sqle) {
  424. ec.addElement(new P().addElement(sqle.getMessage()));
  425. sqle.printStackTrace();
  426. }
  427. }
  428.  
  429.  
  430.  
  431. if (is_escalated_admin == 0) {
  432. is_escalated_admin = IsAdmin(connection, "student");
  433. if (is_escalated_admin == 1) {
  434. s.setMessage("De account 'student' is nu admin! Schrijf volgende code op het antwoordblad: " + GetCode(3));
  435. success_code = " G0Ld-47";
  436. }
  437. }
  438.  
  439.  
  440. if (check_empty_accounts) {
  441. int row_count = GetDBint(connection, Query("COUNT(*) AS rowcount", ACCT[35], ""));
  442. if (row_count == 0) {
  443. s.setMessage("Geen accounts gevonden! Schrijf volgende code op het antwoordblad: " + GetCode(5));
  444. success_code = " Dr.N0-01";
  445. }
  446. }
  447.  
  448.  
  449. if ((backdoor_count == 0) && (!"disabled".equals("disabled"))) {
  450. backdoor_count = GetCountUser(connection, "disabled", "wortel");
  451. if (backdoor_count == 1) {
  452. s.setMessage("Er is een account 'disabled' toegevoegd! Schrijf volgende code op het antwoordblad: " + GetCode(6));
  453. success_code = " 3xPL0re-22";
  454. }
  455.  
  456. }
  457.  
  458. }
  459. catch (Exception e)
  460. {
  461. s.setMessage("Error generating " + getClass().getName());
  462. e.printStackTrace();
  463. }
  464.  
  465. return ec;
  466. }
  467.  
  468. private Element ToonLogin(WebSession s)
  469. {
  470. ElementContainer ec = new ElementContainer();
  471.  
  472.  
  473. ec.addElement(new P().addElement("Gebruiker: "));
  474. Input user = new Input("TEXT", ACCT[7], accountName.toString());
  475. ec.addElement(user);
  476.  
  477.  
  478. ec.addElement(new P().addElement("Paswoord: "));
  479. Input pass = new Input("PASSWORD", ACCT[9], "");
  480. ec.addElement(pass);
  481.  
  482. ec.addElement(new StringElement(GenerateLoginJS()));
  483.  
  484.  
  485.  
  486. Input b = new Input();
  487. b.setType("BUTTON");
  488. b.setValue("Inloggen");
  489. b.addAttribute("onclick", "validate();");
  490. ec.addElement(b);
  491.  
  492. return ec;
  493. }
  494.  
  495.  
  496. private String GenerateLoginJS()
  497. {
  498. String lineSep = System.getProperty("line.separator");
  499. String script = "<SCRIPT>" + lineSep +
  500. "function validate() { " + lineSep;
  501.  
  502. script = script +
  503. ObfuscateJavaScript(new StringBuilder("regexdisabledaccounts=/").append(regexdisabledaccounts).append("/;").append(lineSep)
  504. .append("msg='Account niet toegelaten'; err=0; ").append(lineSep)
  505. .append("if (regexdisabledaccounts.test(document.form.").append(ACCT[7]).append(".value)) {err+=1; msg+='\\n Uw account heeft geen toegang tot deze site.';}").append(lineSep)
  506. .append("if ( err > 0 ) alert(msg);").append(lineSep).append("else document.form.submit();").toString());
  507.  
  508.  
  509. script = script + lineSep + "} " + lineSep;
  510. script = script + "</SCRIPT>" + lineSep;
  511. return script;
  512. }
  513.  
  514. private Element ToonProfiel(WebSession s, ResultSet results, ResultSetMetaData resultsMetaData)
  515. throws IOException, SQLException
  516. {
  517. results.beforeFirst();
  518.  
  519. if (results.next())
  520. {
  521. Table t = new Table(1);
  522. t.setCellPadding(2);
  523.  
  524.  
  525. TR row = new TR();
  526. TD cell = new TD();
  527. cell.addElement(new B(ACCT[4]));
  528. cell.addElement(new Input("HIDDEN", "Screen", s.getParser().getRawParameter("Screen", "")));
  529. cell.addElement(new Input("HIDDEN", "menu", s.getParser().getRawParameter("menu", "")));
  530. row.addElement(cell);
  531. row.addElement(new TD(ConvertNull(results.getString(ACCT[4])).replaceAll(" ", "&nbsp;")));
  532. t.addElement(row);
  533. row = new TR();
  534. row.addElement(new TD(new B(ACCT[7])));
  535. row.addElement(new TD(ConvertNull(results.getString(ACCT[7])).replaceAll(" ", "&nbsp;")));
  536. t.addElement(row);
  537. row = new TR();
  538. row.addElement(new TD(new B(ACCT[9])));
  539. Input pass = new Input("PASSWORD", ACCT[9], ConvertNull(results.getString(ACCT[9])).replaceAll(" ", "&nbsp;"));
  540. row.addElement(new TD(pass));
  541. t.addElement(row);
  542. row = new TR();
  543. row.addElement(new TD(new B(ACCT[23])));
  544. Input email = new Input("TEXT", ACCT[23], ConvertNull(results.getString(ACCT[23])).replaceAll(" ", "&nbsp;"));
  545. row.addElement(new TD(email));
  546. t.addElement(row);
  547. row = new TR();
  548. row.addElement(new TD(new B(ACCT[22])));
  549. Input titel = new Input("TEXT", ACCT[22], ConvertNull(results.getString(ACCT[22])).replaceAll(" ", "&nbsp;"));
  550. row.addElement(new TD(titel));
  551. t.addElement(row);
  552. row = new TR();
  553. row.addElement(new TD(new B(ACCT[13])));
  554. row.addElement(new TD(ConvertNull(results.getString(ACCT[13])).replaceAll(" ", "&nbsp;")));
  555. t.addElement(row);
  556.  
  557. return t;
  558. }
  559. return new B("Query Successful; however no data was returned from this query.");
  560. }
  561.  
  562.  
  563.  
  564.  
  565. private String ToonCredits(WebSession s, String credits)
  566. {
  567. try
  568. {
  569. String msg = "U krijgt credits toegekend voor uw acties op deze site.";
  570. boolean isoverflow = false;
  571. long l = Long.parseLong(credits);
  572.  
  573. if ((l > 2147483647L) || (l < -2147483648L)) {
  574. msg = msg + "<br/>Ongeldig krediet.";
  575. isoverflow = true;
  576. } else {
  577. msg = msg + "<br/>U hebt momenteel <b>" + credits + "</b> credits.";
  578. }
  579. if ((credits_threshold != -1) && (((isoverflow) && (credits_threshold == 0)) || ((credits_threshold != 0) && (l == credits_threshold)))) {
  580. msg = msg + "<br/><b><font color=red>Proficiat, u hebt uw credits behaald! Schrijf volgende code op het antwoordblad: " + GetCode(7) + "</font></b>";
  581.  
  582. success_code = " B0nD-07"; }
  583. String attribuut;
  584. String buttontext; if ((credits_upgrade > 0) && (!isPremium) && (l > 9L)) {
  585. attribuut = "disabled=\"\"";
  586. buttontext = "Upgrade naar Premium Account!";
  587. if (l >= credits_upgrade) {
  588. attribuut = "";
  589. } else
  590. buttontext = "Upgrade naar Premium Account (nog " + Long.toString(credits_upgrade - l) + " credits)";
  591. }
  592. return msg + "<button " + attribuut + " value=\"Upgrade\" name=\"SUBMIT\" type=\"SUBMIT\">" + buttontext + "</button>";
  593. }
  594. catch (Exception e) {}
  595.  
  596. return "<br/>Ongeldig krediet.";
  597. }
  598.  
  599. private long AddCredits(int credits)
  600. {
  601. try
  602. {
  603. long l = Long.parseLong(Credits);
  604. l += credits;
  605. Credits = String.valueOf(l);
  606. return l;
  607. } catch (Exception e) {
  608. Credits = "0"; }
  609. return 0L;
  610. }
  611.  
  612. private long GetTotalCredits()
  613. {
  614. try
  615. {
  616. return Long.parseLong(Credits);
  617. }
  618. catch (Exception e) {}
  619. return 0L;
  620. }
  621.  
  622.  
  623. private Element ToonPremiumShop(WebSession s, long credits)
  624. {
  625. Div div = new Div();
  626.  
  627. div.addElement("<style type=\"text/css\" scoped>.square-button { border: 2px outset blue; background-color: lightBlue; height:100px; width:100px; cursor:pointer; white-space:normal;} .square-button:hover:enabled { background-color: blue; color:white; white-space:normal;} </style>");
  628.  
  629. Table t = new Table(0);
  630. t.setCellPadding(2);
  631.  
  632. TR row = new TR();
  633. TD cell = new TD();
  634. cell.addElement(new Input("HIDDEN", "Screen", s.getParser().getRawParameter("Screen", "")));
  635. cell.addElement(new Input("HIDDEN", "menu", s.getParser().getRawParameter("menu", "")));
  636. cell.addElement(new Input("HIDDEN", "SUBMIT", "Koop"));
  637. row.addElement(cell);
  638. cell = new TD();
  639.  
  640.  
  641. String disabled = " disabled";
  642. if (credits >= 10L)
  643. disabled = "";
  644. cell.addElement("<input class=\"square-button\" type=\"submit\" name=\"Koop\"" + disabled + " value=\"Smiley\"/>");
  645. cell.addElement("<div align=\"center\"><br/>10 credits</div>");
  646. row.addElement(cell);
  647. cell = new TD();
  648.  
  649. disabled = " disabled";
  650. if (credits >= 2000L)
  651. disabled = "";
  652. cell.addElement("<input class=\"square-button\" type=\"submit\" name=\"Koop\"" + disabled + " value=\"Ticket BruCON 2016\"/>");
  653. cell.addElement("<div align=\"center\"><br/>2.000 credits</div>");
  654. row.addElement(cell);
  655. cell = new TD();
  656.  
  657. disabled = " disabled";
  658. if (credits >= 5000L)
  659. disabled = "";
  660. cell.addElement("<input class=\"square-button\" type=\"submit\" name=\"Koop\"" + disabled + " value=\"Howest T-Shirt\"/>");
  661. cell.addElement("<div align=\"center\"><br/>5.000 credits</div>");
  662. row.addElement(cell);
  663. cell = new TD();
  664.  
  665. disabled = " disabled";
  666. if (credits >= 100000L)
  667. disabled = "";
  668. cell.addElement("<input class=\"square-button\" type=\"submit\" name=\"Koop\"" + disabled + " value=\"Howest Diploma\"/>");
  669. cell.addElement("<div align=\"center\"><br/>100.000 credits</div>");
  670. row.addElement(cell);
  671. cell = new TD();
  672.  
  673. if ((leet_shop_credits > 0) && (credits >= leet_shop_credits)) {
  674. cell.addElement("<input class=\"square-button\" type=\"submit\" name=\"Koop\" disabled value=\"" + leet_shop_item + "\"/>");
  675. cell.addElement("<div align=\"center\">Bijna op VTM!<br/>H4x0r 5k1llz</div>");
  676. row.addElement(cell);
  677. cell = new TD();
  678. }
  679.  
  680. t.addElement(row);
  681.  
  682. div.addElement(t);
  683. return div;
  684. }
  685.  
  686.  
  687. private int GetPremiumBedrag(String item, WebSession s)
  688. {
  689. if (item.equals("Howest T-Shirt")) {
  690. s.setMessage("Uw bestelling wordt zo snel mogelijk verzonden.");
  691. return 5000;
  692. }
  693. if (item.equals("Ticket BruCON 2016")) {
  694. s.setMessage("Reserveer alvast 27 en 28 oktober in uw agenda voor BruCON Security Conference.");
  695. return 2000;
  696. }
  697. if (item.equals("Smiley")) {
  698. Smiley = RotateSmiley(Smiley);
  699. Cookie sk = new Cookie("smiley", Smiley);
  700. s.getResponse().addCookie(sk);
  701. return 10;
  702. }
  703. if (item.equals("Howest Diploma")) {
  704. s.setMessage("Helaas worden diploma's pas op het einde van de studies uitgedeeld.");
  705.  
  706. s.setMessage("Tip: Zie je al vijf items om te bestellen in de Premium Shop?");
  707. return 100000;
  708. }
  709. if ((leet_shop_credits > 0) && (item.equals(leet_shop_item))) {
  710. s.setMessage("Nog een bekende vlaming erbij! Schrijf volgende code op het antwoordblad: " + GetCode(2));
  711. success_code = " D0min4t10N-36";
  712. return leet_shop_credits;
  713. }
  714.  
  715. return 0;
  716. }
  717.  
  718. private String RotateSmiley(String Smiley)
  719. {
  720. if (Smiley == null)
  721. return ":-)";
  722. if (Smiley.equals(":-)"))
  723. return ":-p";
  724. if (Smiley.equals(":-p")) {
  725. return "8-)";
  726. }
  727. return ":-)";
  728. }
  729.  
  730.  
  731. protected void addMessage(WebSession s)
  732. {
  733. try
  734. {
  735. String message = s.getParser().getRawParameter(MESSAGE, "");
  736. String title = HtmlEncoder.encode(s.getParser().getRawParameter(TITLE, ""));
  737.  
  738. if ((!title.isEmpty()) && (!message.isEmpty())) {
  739. if (!IsScript(message)) {
  740. Connection connection = DatabaseUtilities.getConnection(s);
  741.  
  742. String query = Insert("messages", "?, ?, ?, ?, ? ");
  743.  
  744. PreparedStatement statement = connection.prepareStatement(query, 1004,
  745. 1007);
  746. statement.setInt(1, count++);
  747. statement.setString(2, title);
  748. statement.setString(3, message);
  749. statement.setString(4, s.getUserName());
  750. statement.setString(5, getClass().getName());
  751. statement.execute();
  752. AddCredits(5);
  753. } else {
  754. s.setMessage("Niet toegelaten inhoud gedetecteerd! Probeer opnieuw :-p");
  755. }
  756. }
  757. }
  758. catch (Exception e) {
  759. s.setMessage("Could not add message to database");
  760. }
  761. }
  762.  
  763. protected Element ShowAddMessage(WebSession s)
  764. {
  765. Table t = new Table(0).setCellSpacing(0).setCellPadding(0).setBorder(0);
  766. TR row1 = new TR();
  767. TR row2 = new TR();
  768. row1.addElement(new TD(new StringElement("Titel: ")));
  769.  
  770. Input inputTitle = new Input("TEXT", TITLE, "");
  771. row1.addElement(new TD(inputTitle));
  772.  
  773. TD item1 = new TD();
  774. item1.setVAlign("TOP");
  775. item1.addElement(new StringElement("Bericht: "));
  776. row2.addElement(item1);
  777.  
  778. TD item2 = new TD();
  779. TextArea ta = new TextArea(MESSAGE, 5, 60);
  780. item2.addElement(ta);
  781. row2.addElement(item2);
  782. t.addElement(row1);
  783. t.addElement(row2);
  784.  
  785. Element b = ECSFactory.makeButton("Toevoegen");
  786. ElementContainer ec = new ElementContainer();
  787. ec.addElement(t);
  788. ec.addElement(new P().addElement(b));
  789.  
  790. return ec;
  791. }
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800. public Element ShowMessages(WebSession s)
  801. {
  802. Table t = new Table(0).setCellSpacing(0).setCellPadding(0).setBorder(0);
  803.  
  804. try
  805. {
  806. Connection connection = DatabaseUtilities.getConnection(s);
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813. String query = Query("*", "messages", "lesson_type = ?");
  814. PreparedStatement statement = connection.prepareStatement(query, 1004,
  815. 1007);
  816.  
  817. statement.setString(1, getClass().getName());
  818. ResultSet results = statement.executeQuery();
  819.  
  820. if ((results != null) && (results.first()))
  821. {
  822. results.beforeFirst();
  823.  
  824. for (int i = 0; results.next(); i++)
  825. {
  826. String link = "<a href='" + getLink() + "&" + NUMBER + "=" + results.getInt(NUM_COL) +
  827. "' style='cursor:hand'>" + results.getString(TITLE_COL) + "</a>";
  828. TD td = new TD().addElement(link);
  829. TR tr = new TR().addElement(td);
  830. t.addElement(tr);
  831. }
  832. }
  833. }
  834. catch (Exception e) {
  835. s.setMessage("Error while getting message list.");
  836. }
  837.  
  838. ElementContainer ec = new ElementContainer();
  839.  
  840. ec.addElement(t);
  841.  
  842. return ec;
  843. }
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852. protected Element makeCurrent(WebSession s)
  853. {
  854. ElementContainer ec = new ElementContainer();
  855.  
  856. try
  857. {
  858. int messageNum = s.getParser().getIntParameter(NUMBER, 0);
  859.  
  860. Connection connection = DatabaseUtilities.getConnection(s);
  861.  
  862. String query = Query("*", "messages", "num = ? and lesson_type = ?");
  863. PreparedStatement statement = connection.prepareStatement(query, 1004,
  864. 1007);
  865.  
  866. statement.setInt(1, messageNum);
  867. statement.setString(2, getClass().getName());
  868. ResultSet results = statement.executeQuery();
  869.  
  870. if ((results != null) && (results.first()))
  871. {
  872.  
  873. Table t = new Table(0).setCellSpacing(0).setCellPadding(0).setBorder(0);
  874. TR row1 = new TR(new TD(new B(new StringElement("Titel:"))));
  875. row1.addElement(new TD(new StringElement(results.getString(TITLE_COL))));
  876. t.addElement(row1);
  877.  
  878. String messageData = results.getString(MESSAGE_COL);
  879. TR row2 = new TR(new TD(new B(new StringElement("Bericht:"))));
  880. row2.addElement(new TD(new StringElement(messageData)));
  881. t.addElement(row2);
  882.  
  883.  
  884.  
  885.  
  886.  
  887. ec.addElement(t);
  888.  
  889.  
  890.  
  891. }
  892. else if (messageNum != 0)
  893. {
  894. ec.addElement(new P().addElement("Could not find message " + messageNum));
  895. }
  896.  
  897. }
  898. catch (Exception e)
  899. {
  900. s.setMessage("Error generating " + getClass().getName());
  901. e.printStackTrace();
  902. }
  903.  
  904. return ec;
  905. }
  906.  
  907. private int GetDBint(Connection connection, String SQL) {
  908. try {
  909. int ret = -1;
  910. Statement st = connection.createStatement();
  911. ResultSet r = st.executeQuery(SQL);
  912. r.next();
  913. ret = r.getInt(1);
  914. r.close();
  915. return ret;
  916. } catch (SQLException sqle) {}
  917. return -1;
  918. }
  919.  
  920. private String ConvertNull(String data)
  921. {
  922. String str = data;
  923. if (str == null) str = "";
  924. return str;
  925. }
  926.  
  927. private int GetCountUser(Connection connection, String accountname, String password)
  928. {
  929. return GetDBint(connection, Query("COUNT(*) AS rowcount", ACCT[35], ACCT[7] + "='" + accountname + "' AND " + ACCT[9] + "='" + password + "'"));
  930. }
  931.  
  932. private int IsAdmin(Connection connection, String accountname)
  933. {
  934. return GetDBint(connection, Query(ACCT[13], ACCT[35], ACCT[7] + "='" + accountname + "'"));
  935. }
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946. private void createAccounts(Connection connection)
  947. throws SQLException
  948. {
  949. Statement statement = connection.createStatement();
  950.  
  951. statement.executeUpdate("INSERT INTO pen_account_table VALUES (1,'lector','Beheerder','w007-89','lector@student.howest.be',0,1)");
  952. statement.executeUpdate("INSERT INTO pen_account_table VALUES (2,'student','Examen test account','student','student@student.howest.be',0,0)");
  953. statement.executeUpdate("INSERT INTO pen_account_table VALUES (3,'tweedezit','Another account','tweedezit','tweedezit@student.howest.be',0,0)");
  954. }
  955.  
  956. private void createLoginDataTable(Connection connection)
  957. throws SQLException
  958. {
  959. Statement statement = connection.createStatement();
  960.  
  961.  
  962. try
  963. {
  964. statement.executeUpdate("DROP TABLE " + ACCT[35]);
  965. }
  966. catch (SQLException e) {
  967. System.out.println("Error dropping user database");
  968. }
  969.  
  970.  
  971. try
  972. {
  973. String createTableStatement = "CREATE TABLE " + ACCT[35] + " (" + ACCT[4] + " int not null primary key," +
  974. ACCT[7] + " varchar(20)," + ACCT[22] + " varchar(20)," + ACCT[9] + " varchar(30), " + ACCT[23] + " varchar(255), " + ACCT[28] + " bit, " + ACCT[13] + " bit" + ")";
  975. statement.executeUpdate(createTableStatement);
  976. }
  977. catch (SQLException e) {
  978. System.out.println("Error creating user database");
  979. e.printStackTrace();
  980. }
  981.  
  982.  
  983.  
  984.  
  985. statement.executeUpdate(Insert(ACCT[35], "1,'lector','Beheerder','" + GetCode(4) + "','" + "lector" + "@student.howest.be',0,1"));
  986. statement.executeUpdate(Insert(ACCT[35], "2,'student','Examen test account','student','student@student.howest.be',0,0"));
  987. statement.executeUpdate(Insert(ACCT[35], "3,'prettige_vakantie','Another account','prettige_vakantie','prettige_vakantie@student.howest.be',0,0"));
  988. if (additional_accounts > 0) {
  989. for (int i = 4; i < additional_accounts; i++)
  990. {
  991. statement.executeUpdate(Insert(ACCT[35], i + ",'account" + i + "','Another account','account" + i + "','account" + i + "@student.howest.be',0,0"));
  992. }
  993. }
  994. }
  995.  
  996.  
  997.  
  998.  
  999.  
  1000. private void createPremiumContents(Connection connection)
  1001. throws SQLException
  1002. {}
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008. protected Category getDefaultCategory()
  1009. {
  1010. return Category.CHALLENGE;
  1011. }
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019. protected List<String> getHints(WebSession s)
  1020. {
  1021. List<String> hints = new ArrayList();
  1022. hints.add("Je mag het cursusmateriaal gebruiken.");
  1023. hints.add("Foutmeldingen geven soms interessante informatie.");
  1024. hints.add("Het lesje 'Encoding Basics' kan handig zijn.");
  1025. return hints;
  1026. }
  1027.  
  1028. private static final Integer DEFAULT_RANKING = new Integer(20);
  1029.  
  1030. protected Integer getDefaultRanking()
  1031. {
  1032. return DEFAULT_RANKING;
  1033. }
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041. public String getTitle()
  1042. {
  1043. return "Examen";
  1044. }
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062. public Element getCredits()
  1063. {
  1064. return super.getCustomCredits("", HOWEST_LOGO);
  1065. }
  1066.  
  1067. private String Query(String S, String F, String W)
  1068. {
  1069. String q = "";
  1070. if (!W.equals("")) {
  1071. q = " WHERE " + W;
  1072. }
  1073. return "SELECT " + S + " FROM " + F + q;
  1074. }
  1075.  
  1076. private String Insert(String T, String V)
  1077. {
  1078. return "INSERT INTO " + T + " VALUES(" + V + ")";
  1079. }
  1080.  
  1081. private boolean IsSQLi(String text)
  1082. {
  1083. if (allow_sqli) {
  1084. return false;
  1085. }
  1086. if ((text.contains(" OR '1'='1")) || (text.contains(" or '1'='1")) || (text.contains(" or 1=1")) || (text.contains(" OR 1=1"))) {
  1087. return true;
  1088. }
  1089. return false;
  1090. }
  1091.  
  1092. private boolean IsScript(String text)
  1093. {
  1094. if (allow_script) {
  1095. return false;
  1096. }
  1097. if ((text.contains("<script")) || (text.contains("<SCRIPT"))) {
  1098. return true;
  1099. }
  1100. return false;
  1101. }
  1102.  
  1103.  
  1104. public static String Decode(String str)
  1105. {
  1106. try
  1107. {
  1108. return hexDecode(str);
  1109. }
  1110. catch (Exception e) {}
  1111. return str;
  1112. }
  1113.  
  1114.  
  1115. public static String Encode(String str)
  1116. {
  1117. try
  1118. {
  1119. return hexEncode(str);
  1120. }
  1121. catch (Exception e) {}
  1122. return str;
  1123. }
  1124.  
  1125.  
  1126. public static String base64Decode(String str)
  1127. throws IOException
  1128. {
  1129. byte[] b = base64decoder.decodeBuffer(str);
  1130. return new String(b);
  1131. }
  1132.  
  1133. public static String base64Encode(String str)
  1134. {
  1135. byte[] b = str.getBytes();
  1136. return base64encoder.encode(b);
  1137. }
  1138.  
  1139. public static String hexDecode(String hexString)
  1140. {
  1141. try
  1142. {
  1143. if (hexString.length() % 3 != 0) {
  1144. return hexString;
  1145. }
  1146. char[] chars = new char[hexString.length()];
  1147. char[] convChars = new char[hexString.length() / 3];
  1148. hexString.getChars(0, hexString.length(), chars, 0);
  1149. for (int i = 1; i < hexString.length(); i += 3)
  1150. {
  1151. String hexToken = new String(chars, i, 2);
  1152. convChars[(i / 3)] = ((char)Integer.parseInt(hexToken, 16));
  1153. }
  1154. return new String(convChars);
  1155. } catch (NumberFormatException nfe) {}
  1156. return hexString;
  1157. }
  1158.  
  1159.  
  1160. public static String hexEncode(String asciiString)
  1161. {
  1162. char[] ascii = new char[asciiString.length()];
  1163. asciiString.getChars(0, asciiString.length(), ascii, 0);
  1164. StringBuffer hexBuff = new StringBuffer();
  1165. for (int i = 0; i < asciiString.length(); i++)
  1166. {
  1167. hexBuff.append("%");
  1168. hexBuff.append(Integer.toHexString(ascii[i]));
  1169. }
  1170. return hexBuff.toString().toUpperCase();
  1171. }
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188. private String ObfuscateRegex(String text)
  1189. {
  1190. String ret = "";
  1191. for (char c : text.toCharArray()) {
  1192. ret = ret + "[" + Character.toUpperCase(c) + Character.toLowerCase(c) + "]";
  1193. }
  1194. return ret;
  1195. }
  1196.  
  1197. private String ObfuscateJavaScript(String script)
  1198. {
  1199. return "eval(atob(\"" + base64Encode(script).replaceAll("\n", "").replaceAll("\r", "") + "\"));";
  1200. }
  1201.  
  1202. private int seed(int index)
  1203. {
  1204. int this_line = Thread.currentThread().getStackTrace()[index].getLineNumber();
  1205. return this_line;
  1206. }
  1207.  
  1208. private String GetCode(int n)
  1209. {
  1210. String ret = "";
  1211. int checksum = 97 - seed(3) % 97;
  1212. if (seed(2) < 0)
  1213. return codes[(seed(2) % 29)][n] + "-" + Integer.toString(checksum);
  1214. ret = codes[(seed(2) % 28)][n] + "-" + Integer.toString(checksum);
  1215. return ret;
  1216. }
  1217.  
  1218. private void Solution(WebSession s) {}
  1219. }
  1220.  
  1221.  
  1222.  
  1223. Choose File
  1224. Upload and Decompile
  1225.  
  1226. Twitter Facebook Google+ Stumbleupon LinkedIn
  1227. Select a decompiler
  1228. JDCore (very fast)
  1229. CFR (very good and well-supported decompiler for Java 8)
  1230. Jadx, fast and with Android support
  1231. Procyon
  1232. Fernflower
  1233. JAD (very fast, but outdated)
  1234. Need to know what traffic your competitors are generating? Check out my new service.
  1235.  
  1236. Estimated traffic and alexa history for any website
  1237.  
  1238. Privacy Policy
Add Comment
Please, Sign In to add comment