diff --git a/lib/objects/local_string_encoder.rb b/lib/objects/local_string_encoder.rb index 8702631a9..3d9650054 100644 --- a/lib/objects/local_string_encoder.rb +++ b/lib/objects/local_string_encoder.rb @@ -17,6 +17,7 @@ class StringEncoder attr_accessor :strings_to_encode attr_accessor :has_base64_inputs attr_accessor :outputs + attr_accessor :iterations # override this def initialize @@ -24,6 +25,7 @@ class StringEncoder self.strings_to_encode = [] self.module_name = 'Null encoder' self.has_base64_inputs = false + self.iterations = 1 self.outputs = [] end @@ -79,7 +81,8 @@ class StringEncoder def get_options_array [['--help', '-h', GetoptLong::NO_ARGUMENT], ['--b64', GetoptLong::OPTIONAL_ARGUMENT], - ['--strings_to_encode', '-s', GetoptLong::OPTIONAL_ARGUMENT]] + ['--strings_to_encode', '-s', GetoptLong::OPTIONAL_ARGUMENT], + ['--iterations', GetoptLong::OPTIONAL_ARGUMENT],] end # Override this when using read_fact's in your module. Always call super first. @@ -97,6 +100,12 @@ class StringEncoder self.strings_to_encode << arg; when '--b64' # do nothing + when '--iterations' + if not arg.to_i == 0 + self.iterations = arg.to_i + else + self.iterations = 1 + end end end diff --git a/lib/objects/local_string_generator.rb b/lib/objects/local_string_generator.rb index 58dae9dd4..a9bf03c18 100644 --- a/lib/objects/local_string_generator.rb +++ b/lib/objects/local_string_generator.rb @@ -14,12 +14,14 @@ class StringGenerator attr_accessor :module_name attr_accessor :has_base64_inputs attr_accessor :outputs + attr_accessor :iterations # override this def initialize # default values self.module_name = 'Null generator' self.has_base64_inputs = false + self.iterations = 1 self.outputs = [] end @@ -66,7 +68,8 @@ class StringGenerator def get_options_array [['--help', '-h', GetoptLong::NO_ARGUMENT], - ['--b64', GetoptLong::OPTIONAL_ARGUMENT]] + ['--b64', GetoptLong::OPTIONAL_ARGUMENT], + ['--iterations', GetoptLong::OPTIONAL_ARGUMENT]] end # Override this when using read_fact's in your module. Always call super first @@ -82,6 +85,12 @@ class StringGenerator usage when '--b64' # do nothing + when '--iterations' + if not arg.to_i == 0 + self.iterations = arg.to_i + else + self.iterations = 1 + end end end @@ -91,6 +100,7 @@ class StringGenerator OPTIONS: --strings_to_encode [string] + --iterations [Integer] " exit end @@ -101,7 +111,9 @@ class StringGenerator read_arguments Print.local_verbose "Generating..." - generate + self.iterations.times do + generate + end # print the first 1000 chars to screen output = self.outputs.to_s diff --git a/modules/generators/config_files/filezilla_config/secgen_metadata.xml b/modules/generators/config_files/filezilla_config/secgen_metadata.xml index 25cbcd5c0..1bf55ef05 100644 --- a/modules/generators/config_files/filezilla_config/secgen_metadata.xml +++ b/modules/generators/config_files/filezilla_config/secgen_metadata.xml @@ -8,15 +8,21 @@ Jack Biggs MIT Creates a Filezilla config file which includes a host, a port and a password - - string_generator - local_calculation - linux - - host - port - password - - config_file - - \ No newline at end of file + + string_generator + local_calculation + linux + + host + port + password + + 0.0.0.0 + + + 21 + + + Nothing to see here + + diff --git a/modules/generators/content/password_file/secgen_metadata.xml b/modules/generators/content/password_file/secgen_metadata.xml index 7c96cf702..d1e31dfcb 100644 --- a/modules/generators/content/password_file/secgen_metadata.xml +++ b/modules/generators/content/password_file/secgen_metadata.xml @@ -17,6 +17,19 @@ usernames benign malicious + + + password + + + root + + + Cars + + + world_domination + generated_strings diff --git a/modules/generators/content/password_file/templates/password_file.md.erb b/modules/generators/content/password_file/templates/password_file.md.erb index 8d565f67c..478185a07 100644 --- a/modules/generators/content/password_file/templates/password_file.md.erb +++ b/modules/generators/content/password_file/templates/password_file.md.erb @@ -1,13 +1,11 @@ # Password list <% - website_count = 0 - pass_list.each { |pass| + pass_list.each_with_index { |pass, index| %> -## <%= website_sample[website_count] %> -### Username: <%= user_list[website_count] %> +## <%= website_sample[index] %> +### Username: <%= user_list[index] %> ### Password: <%= pass %> -<% website_count += 1 %> <% } %> diff --git a/modules/generators/flag/flag_words/secgen_metadata.xml b/modules/generators/flag/flag_words/secgen_metadata.xml index e9d7932ad..e87ab9b12 100644 --- a/modules/generators/flag/flag_words/secgen_metadata.xml +++ b/modules/generators/flag/flag_words/secgen_metadata.xml @@ -1,12 +1,13 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.github/cliffe/SecGen/generator"> Random Words Flag Generator Z. Cliffe Schreuders MIT - Uses a wordlist (Ruby gem + a wordlist) to generate a list of random (mostly English) dictionary words. May include punctuation. + Uses a wordlist (Ruby gem + a wordlist) to generate a list of random (mostly English) + dictionary words. May include punctuation. flag_generator local_calculation @@ -17,5 +18,5 @@ http://wordlist.sourceforge.net/ generated_strings - - + + \ No newline at end of file diff --git a/modules/generators/structured_content/ss_modules/manifests/.no_puppet b/modules/generators/structured_content/ss_modules/manifests/.no_puppet new file mode 100644 index 000000000..e69de29bb diff --git a/modules/generators/structured_content/ss_modules/secgen_local/local.rb b/modules/generators/structured_content/ss_modules/secgen_local/local.rb new file mode 100644 index 000000000..d19969b17 --- /dev/null +++ b/modules/generators/structured_content/ss_modules/secgen_local/local.rb @@ -0,0 +1,58 @@ +#!/usr/bin/ruby +require_relative '../../../../../lib/objects/local_string_generator.rb' +require 'fileutils' + +class SSModuleListGenerator < StringGenerator + attr_accessor :filter + + LOCAL_DIR = File.expand_path('../../',__FILE__) + TEMPLATE_PATH = "#{LOCAL_DIR}/templates/active-modules" + + def initialize + super + + self.module_name = 'Security Shepherd Module Generator' + self.filter = [] + end + + def generate + modules = File.new(TEMPLATE_PATH) + if not self.filter.empty? + self.filter.each { |criteria| + IO.foreach(modules) { |line| + # Very basic filter to capture matches based on a filter string + if "#{line}".match(criteria) + self.outputs << "#{line}".strip + end + } + } + else + modules.each { |line| self.outputs << "#{line}".strip} + end + end + + def get_options_array + super + [['--filter', GetoptLong::OPTIONAL_ARGUMENT]] + end + + def process_options(opt, arg) + super + + case opt + when '--filter' + self.filter << arg + end + end + + def usage + Print.err "Usage: + #{$0} [--options] + + OPTIONS: + --filter [String] +" + exit + end +end + +SSModuleListGenerator.new.run diff --git a/modules/generators/structured_content/ss_modules/secgen_metadata.xml b/modules/generators/structured_content/ss_modules/secgen_metadata.xml new file mode 100644 index 000000000..e1d327902 --- /dev/null +++ b/modules/generators/structured_content/ss_modules/secgen_metadata.xml @@ -0,0 +1,20 @@ + + + + Security Shepherd module list Generator + James Davis + MIT + Generates a list of strings based on security shepherd modules + + + ss_modules + linux + + + filter + + module_list + \ No newline at end of file diff --git a/modules/generators/structured_content/ss_modules/ss_modules.pp b/modules/generators/structured_content/ss_modules/ss_modules.pp new file mode 100644 index 000000000..e69de29bb diff --git a/modules/generators/structured_content/ss_modules/templates/active-modules b/modules/generators/structured_content/ss_modules/templates/active-modules new file mode 100644 index 000000000..52eb705d5 --- /dev/null +++ b/modules/generators/structured_content/ss_modules/templates/active-modules @@ -0,0 +1,55 @@ +Broken Session Management +Session Management Challenge 1 +Session Management Challenge 2 +Session Management Challenge 3 +Session Management Challenge 4 +Session Management Challenge 5 +Session Management Challenge 6 +Session Management Challenge 7 +Session Management Challenge 8 +Failure to Restrict URL Access +Failure to Restrict URL Access 1 +Failure to Restrict URL Access 2 +Failure to Restrict URL Access 3 +Security Misconfiguration +Security Misconfig Cookie Flag +Unvalidated Redirects and Forwards +Poor Data Validation +Poor Data Validation 1 +Poor Data Validation 2 +Insecure Direct Object References +Insecure Direct Object Reference Bank +Insecure Direct Object Reference Challenge 1 +Insecure Direct Object Reference Challenge 2 +Cross Site Scripting +Cross Site Scripting 1 +Cross Site Scripting 2 +Cross Site Scripting 3 +Cross Site Scripting 4 +Cross Site Scripting 5 +Cross Site Scripting 6 +SQL Injection +SQL Injection 1 +SQL Injection 2 +SQL Injection 3 +SQL Injection 4 +SQL Injection 5 +SQL Injection 6 +SQL Injection 7 +SQL Injection Escaping +SQL Injection Stored Procedure +Cross Site Request Forgery +CSRF 1 +CSRF 2 +CSRF 3 +CSRF 4 +CSRF 5 +CSRF 6 +CSRF 7 +CSRF JSON +Insecure Cryptographic Storage +Insecure Cryptographic Storage Challenge 1 +Insecure Cryptographic Storage Challenge 2 +Insecure Cryptographic Storage Challenge 3 +Insecure Cryptographic Storage Challenge 4 +Insecure Cryptographic Storage Home Made Key \ No newline at end of file diff --git a/modules/vulnerabilities/unix/http/apache_druid_rce/files/stretch.list b/modules/vulnerabilities/unix/http/apache_druid_rce/files/stretch.list index 927ab7e90..61e318bc0 100644 --- a/modules/vulnerabilities/unix/http/apache_druid_rce/files/stretch.list +++ b/modules/vulnerabilities/unix/http/apache_druid_rce/files/stretch.list @@ -1,2 +1,2 @@ -deb http://deb.debian.org/debian/ stretch main -deb-src http://deb.debian.org/debian stretch main \ No newline at end of file +deb http://archive.debian.org/debian/ stretch main +deb-src http://archive.debian.org/debian stretch main \ No newline at end of file diff --git a/modules/vulnerabilities/unix/http/jenkins_cli/files/stretch.list b/modules/vulnerabilities/unix/http/jenkins_cli/files/stretch.list index 927ab7e90..61e318bc0 100644 --- a/modules/vulnerabilities/unix/http/jenkins_cli/files/stretch.list +++ b/modules/vulnerabilities/unix/http/jenkins_cli/files/stretch.list @@ -1,2 +1,2 @@ -deb http://deb.debian.org/debian/ stretch main -deb-src http://deb.debian.org/debian stretch main \ No newline at end of file +deb http://archive.debian.org/debian/ stretch main +deb-src http://archive.debian.org/debian stretch main \ No newline at end of file diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/ROOT.war b/modules/vulnerabilities/unix/web_training/security_shepherd/files/ROOT.war new file mode 100644 index 000000000..6d1af66a7 Binary files /dev/null and b/modules/vulnerabilities/unix/web_training/security_shepherd/files/ROOT.war differ diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/database.properties b/modules/vulnerabilities/unix/web_training/security_shepherd/files/database.properties new file mode 100644 index 000000000..1fb8cb9df --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/files/database.properties @@ -0,0 +1,6 @@ +databaseConnectionURL=jdbc:mariadb://localhost:3306/ +DriverType=org.mariadb.jdbc.Driver +databaseSchema=core +databaseUsername=root +databasePassword=CowSaysMoo +databaseOptions=useUnicode=true&character_set_server=utf8mb4 \ No newline at end of file diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/grant.sql b/modules/vulnerabilities/unix/web_training/security_shepherd/files/grant.sql new file mode 100644 index 000000000..128b78115 --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/files/grant.sql @@ -0,0 +1 @@ +GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'CowSaysMoo' WITH GRANT OPTION; diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/moduleSchemas.sql b/modules/vulnerabilities/unix/web_training/security_shepherd/files/moduleSchemas.sql new file mode 100644 index 000000000..a57c098cf --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/files/moduleSchemas.sql @@ -0,0 +1,1381 @@ +/* + * This file is part of the Security Shepherd Project. + * + * The Security Shepherd project is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version.
+ * + * The Security Shepherd project is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details.
+ * + * You should have received a copy of the GNU General Public License + * along with the Security Shepherd project. If not, see . + */ + + +-- Script used to create all of the schemas on the vulnerable database server + +DELIMITER ; + +-- ====================================================== +-- SQL Lesson +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `SqlInjLesson`; +CREATE SCHEMA IF NOT EXISTS `SqlInjLesson` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `SqlInjLesson` ; + +-- ----------------------------------------------------- +-- Table `SqlInjLesson`.`tb_users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SqlInjLesson`.`tb_users` ( + `usersId` INT NOT NULL AUTO_INCREMENT , + `username` VARCHAR(64) NOT NULL , + `comment` LONGTEXT NULL , + PRIMARY KEY (`usersId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlInjLesson`.`tb_users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlInjLesson`; +INSERT INTO `SqlInjLesson`.`tb_users` (`usersId`, `username`, `comment`) VALUES (14232, 'Mark Denihan', 'This guy wrote this application'); +INSERT INTO `SqlInjLesson`.`tb_users` (`usersId`, `username`, `comment`) VALUES (61523, 'Cloud', 'Has a Big Sword'); +INSERT INTO `SqlInjLesson`.`tb_users` (`usersId`, `username`, `comment`) VALUES (12543, 'Fred Mtenzi', 'A lecturer in DIT Kevin Street'); +INSERT INTO `SqlInjLesson`.`tb_users` (`usersId`, `username`, `comment`) VALUES (82642, 'qw!dshs@ab', 'Lesson Completed. The result key is 3c17f6bf34080979e0cebda5672e989c07ceec9fa4ee7b7c17c9e3ce26bc63e0'); +INSERT INTO `SqlInjLesson`.`tb_users` (`usersId`, `username`, `comment`) VALUES (12345, 'user', 'Try Adding some SQL Code'); +INSERT INTO `SqlInjLesson`.`tb_users` (`usersId`, `username`, `comment`) VALUES (12346, 'OR 1 = 1', 'Your Close, You need to escape the string with an apostraphe so that your code is interpreted'); + +COMMIT; + +-- ====================================================== +-- SQL Challenge Two (email) +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `SqlChalEmail` ; +CREATE SCHEMA IF NOT EXISTS `SqlChalEmail` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `SqlChalEmail` ; + +-- ----------------------------------------------------- +-- Table `SqlChalEmail`.`customers` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SqlChalEmail`.`customers` ( + `customerId` VARCHAR(64) NOT NULL , + `customerName` VARCHAR(32) NOT NULL , + `customerAddress` VARCHAR(32) NOT NULL , + `comment` LONGTEXT NULL , + PRIMARY KEY (`customerId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlChalEmail`.`customers` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlChalEmail`; +INSERT INTO `SqlChalEmail`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('019ce129ee8960a6b875b20095705d53f8c7b0ca', 'John Fits', 'crazycat@example.com', NULL); +INSERT INTO `SqlChalEmail`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('44e2bdc1059903f464e5ba9a34b927614d7fee55', 'Rita Hanolan', 'thenightbefore@example.com', 'Well Done! The Result key is f62abebf5658a6a44c5c9babc7865110c62f5ecd9d0a7052db48c4dbee0200e3'); +INSERT INTO `SqlChalEmail`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('05159435826869ccfd76d77a2ed4ba7c2023f0cb', 'Rubix Man', 'manycolours@cube.com', NULL); +INSERT INTO `SqlChalEmail`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('6c5c26a1deccf4a87059deb0a3fb463ff7d62fd5', 'Paul O Brien', 'sixshooter@deaf.com', NULL); + +COMMIT; + +-- ====================================================== +-- SQL Challenge 1 +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +CREATE SCHEMA IF NOT EXISTS `SqlChalOne` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `SqlChalOne` ; + +-- ----------------------------------------------------- +-- Table `SqlChalOne`.`customers` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `SqlChalOne`.`customers` ; + +CREATE TABLE IF NOT EXISTS `SqlChalOne`.`customers` ( + `customerId` VARCHAR(64) NOT NULL , + `customerName` VARCHAR(32) NOT NULL , + `customerAddress` VARCHAR(32) NOT NULL , + `comment` LONGTEXT NULL , + PRIMARY KEY (`customerId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlChalOne`.`customers` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlChalOne`; +INSERT INTO `SqlChalOne`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('019ce129ee8960a6b875b20095705d53f8c7b0ca', 'John Fits', 'crazycat@example.com', NULL); +INSERT INTO `SqlChalOne`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('44e2bdc1059903f464e5ba9a34b927614d7fee55', 'Rita Hanolan', 'thenightbefore@example.com', NULL); +INSERT INTO `SqlChalOne`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('05159435826869ccfd76d77a2ed4ba7c2023f0cb', 'Rubix Man', 'manycolours@cube.com', NULL); +INSERT INTO `SqlChalOne`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('6c5c26a1deccf4a87059deb0a3fb463ff7d62fd5', 'Paul O Brien', 'sixshooter@deaf.com', 'Well Done! The reuslt Key is fd8e9a29dab791197115b58061b215594211e72c1680f1eacc50b0394133a09f'); + +COMMIT; + +-- ====================================================== +-- SQL Challenge 3 +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +CREATE SCHEMA IF NOT EXISTS `SqlChalThree` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `SqlChalThree` ; + +-- ----------------------------------------------------- +-- Table `SqlChalThree`.`customers` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `SqlChalThree`.`customers` ; + +CREATE TABLE IF NOT EXISTS `SqlChalThree`.`customers` ( + `customerId` VARCHAR(64) NOT NULL , + `customerName` VARCHAR(32) NOT NULL , + `creditCardNumber` VARCHAR(19) NOT NULL , + `creditCardExp` VARCHAR(5) NOT NULL , + `creditCardSecurityNumber` VARCHAR(3) NOT NULL , + PRIMARY KEY (`customerId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlChalThree`.`customers` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlChalThree`; +INSERT INTO `SqlChalThree`.`customers` (`customerId`, `customerName`, `creditCardNumber`, `creditCardExp`, `creditCardSecurityNumber`) VALUES ('ef322ce991de1a890470ad94001e2b83b9266334', 'John Doe', '8454 1244 4712 2144', '12/13', '452'); +INSERT INTO `SqlChalThree`.`customers` (`customerId`, `customerName`, `creditCardNumber`, `creditCardExp`, `creditCardSecurityNumber`) VALUES ('92cb640f60e2c9ea11cf89ef2c87d442dc3fa345', 'Jason McCoy', '5468 1763 1854 1451', '12/13', '285'); +INSERT INTO `SqlChalThree`.`customers` (`customerId`, `customerName`, `creditCardNumber`, `creditCardExp`, `creditCardSecurityNumber`) VALUES ('8d6588bbfe4ac5b52ebf452dfc5cefe934b788ae', 'Mark Denihan', '1245 2514 2315 2147', '09/20', '745'); +INSERT INTO `SqlChalThree`.`customers` (`customerId`, `customerName`, `creditCardNumber`, `creditCardExp`, `creditCardSecurityNumber`) VALUES ('b8811379df47b10b59b717942b8d2aaafeb8f0f8', 'Mary Martin', '9815 1547 3214 7569', '11/14', '987'); +INSERT INTO `SqlChalThree`.`customers` (`customerId`, `customerName`, `creditCardNumber`, `creditCardExp`, `creditCardSecurityNumber`) VALUES ('cef8433dc9f4e532999fd7767eaaf7ab620fd94d', 'Joseph McDonnell', '9175 1244 4758 8854', '12/13', '653'); + +COMMIT; + +-- ====================================================== +-- Broken Authentication and Session Management Challenge 2 +-- ====================================================== +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `BrokenAuthAndSessMangChalTwo` ; +CREATE SCHEMA IF NOT EXISTS `BrokenAuthAndSessMangChalTwo` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `BrokenAuthAndSessMangChalTwo` ; + +-- ----------------------------------------------------- +-- Table `BrokenAuthAndSessMangChalTwo`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `BrokenAuthAndSessMangChalTwo`.`users` ( + `userId` INT NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `userPassword` VARCHAR(128) NOT NULL , + `userAddress` VARCHAR(128) NOT NULL , + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `BrokenAuthAndSessMangChalTwo`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `BrokenAuthAndSessMangChalTwo`; +INSERT INTO `BrokenAuthAndSessMangChalTwo`.`users` (`userId`, `userName`, `userPassword`, `userAddress`) VALUES (12, 'admin', 'default', 'zoidberg22@shepherd.com'); +INSERT INTO `BrokenAuthAndSessMangChalTwo`.`users` (`userId`, `userName`, `userPassword`, `userAddress`) VALUES (321, 'administrator', 'default', 'buzzthebald@shepherd.com'); +INSERT INTO `BrokenAuthAndSessMangChalTwo`.`users` (`userId`, `userName`, `userPassword`, `userAddress`) VALUES (3212, 'root', 'default', 'elitehacker@shepherd.com'); +INSERT INTO `BrokenAuthAndSessMangChalTwo`.`users` (`userId`, `userName`, `userPassword`, `userAddress`) VALUES (634, 'superuser', 'default', 'superman@security.com'); +INSERT INTO `BrokenAuthAndSessMangChalTwo`.`users` (`userId`, `userName`, `userPassword`, `userAddress`) VALUES (4524, 'privileged', 'default', 'spoiltbrat@security.com'); + +COMMIT; + +-- ====================================================== +-- BrokenAuthAndSessMangChalThree +-- ====================================================== +DROP SCHEMA IF EXISTS `BrokenAuthAndSessMangChalThree` ; +CREATE SCHEMA IF NOT EXISTS `BrokenAuthAndSessMangChalThree` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `BrokenAuthAndSessMangChalThree`; + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + + +-- ----------------------------------------------------- +-- Table `BrokenAuthAndSessMangChalThree`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `BrokenAuthAndSessMangChalThree`.`users` ( + `userId` INT NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `userPassword` VARCHAR(128) NOT NULL , + `userAddress` VARCHAR(128) NOT NULL , + `userRole` VARCHAR(8) NOT NULL DEFAULT 'guest' , + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `BrokenAuthAndSessMangChalThree`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `BrokenAuthAndSessMangChalThree`; +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (12, 'admin', 'default', 'zoidberg22@shepherd.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (321, 'administrator', 'default', 'buzzthebald@shepherd.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (3212, 'root', 'default', 'elitehacker@shepherd.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (634, 'superuser', 'default', 'superman@security.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (4524, 'privileged', 'default', 'spoiltbrat@security.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (40, 'guest1', 'default', 'guest1@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (41, 'guest2', 'default', 'guest2@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (42, 'guest3', 'default', 'guest3@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (43, 'guest4', 'default', 'guest4@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (44, 'guest5', 'default', 'guest5@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (45, 'guest6', 'default', 'guest6@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (46, 'guest7', 'default', 'guest7@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (47, 'guest8', 'default', 'guest8@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (48, 'guest9', 'guest', 'guest9@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (49, 'guest11', 'guest', 'guest11@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (50, 'guest12', 'guest', 'guest12@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (51, 'guest13', 'guest', 'guest13@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (52, 'guest14', 'guest', 'guest14@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (53, 'guest15', 'guest', 'guest15@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (54, 'guest16', 'guest', 'guest16@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (55, 'guest17', 'guest', 'guest17@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (56, 'guest18', 'guest', 'guest18@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (57, 'guest19', 'guest', 'guest19@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (58, 'guest20', 'guest', 'guest20@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (59, 'guest21', 'guest', 'guest21@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (60, 'guest22', 'guest', 'guest22@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (61, 'guest23', 'guest', 'guest23@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (62, 'guest10', 'guest', 'guest10@guest.com', 'guest'); + +COMMIT; + +-- ====================================================== +-- directObjectRefChalOne +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `directObjectRefChalOne` ; +CREATE SCHEMA IF NOT EXISTS `directObjectRefChalOne` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `directObjectRefChalOne` ; + +-- ----------------------------------------------------- +-- Table `directObjectRefChalOne`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `directObjectRefChalOne`.`users` ( + `userId` VARCHAR(32) NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `privateMessage` MEDIUMTEXT NOT NULL , + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `directObjectRefChalOne`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `directObjectRefChalOne`; +INSERT INTO `directObjectRefChalOne`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('1', 'Paul Bourke', 'No Message Set'); +INSERT INTO `directObjectRefChalOne`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('3', 'Will Bailey', 'I love Go Karting'); +INSERT INTO `directObjectRefChalOne`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('5', 'Orla Cleary', 'As if!'); +INSERT INTO `directObjectRefChalOne`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('7', 'Ronan Fitzpatrick', 'I have retired'); +INSERT INTO `directObjectRefChalOne`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('9', 'Pat McKenana', 'I have a car!'); +INSERT INTO `directObjectRefChalOne`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('11', 'Hidden User', 'Result Key is dd6301b38b5ad9c54b85d07c087aebec89df8b8c769d4da084a55663e6186742'); + +COMMIT; + +-- ====================================================== +-- directObjectRefChalTwo +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `directObjectRefChalTwo` ; +CREATE SCHEMA IF NOT EXISTS `directObjectRefChalTwo` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `directObjectRefChalTwo` ; + +-- ----------------------------------------------------- +-- Table `directObjectRefChalTwo`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `directObjectRefChalTwo`.`users` ( + `userId` VARCHAR(32) NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `privateMessage` MEDIUMTEXT NOT NULL , + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `directObjectRefChalTwo`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `directObjectRefChalTwo`; +INSERT INTO `directObjectRefChalTwo`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('c81e728d9d4c2f636f067f89cc14862c', 'Joe Sullivan', 'I was going to set a message, but then I decided not to.'); +INSERT INTO `directObjectRefChalTwo`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('eccbc87e4b5ce2fe28308fd9f2a7baf3', 'Will Bailey', 'I love Go Karting'); +INSERT INTO `directObjectRefChalTwo`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('e4da3b7fbbce2345d7772b0674a318d5', 'Orla Cleary', 'As if Im going to set a message. Who knows who could read it!'); +INSERT INTO `directObjectRefChalTwo`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('8f14e45fceea167a5a36dedd4bea2543', 'Ronan Fitzpatrick', 'I have retired'); +INSERT INTO `directObjectRefChalTwo`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('6512bd43d9caa6e02c990b0a82652dca', 'Pat McKenana', 'I have a car!'); +INSERT INTO `directObjectRefChalTwo`.`users` (`userId`, `userName`, `privateMessage`) VALUES ('c51ce410c124a10e0db5e4b97fc2af39', 'Hidden User', 'Result Key is 1f746b87a4e3628b90b1927de23f6077abdbbb64586d3ac9485625da21921a0f'); + +COMMIT; + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `SQLiC5Shop` ; +CREATE SCHEMA IF NOT EXISTS `SQLiC5Shop` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `SQLiC5Shop` ; + +-- ----------------------------------------------------- +-- Table `SQLiC5Shop`.`items` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SQLiC5Shop`.`items` ( + `itemId` INT NOT NULL, + `itemName` VARCHAR(45) NULL, + `itemCost` INT NULL, + PRIMARY KEY (`itemId`)) +ENGINE = InnoDB; + +-- ----------------------------------------------------- +-- Table `SQLiC5Shop`.`coupons` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SQLiC5Shop`.`coupons` ( + `couponId` INT NOT NULL, + `perCentOff` INT NULL, + `couponCode` VARCHAR(128) NULL, + `itemId` INT NOT NULL, + PRIMARY KEY (`couponId`), + INDEX `fk_coupons_items_idx` (`itemId` ASC), + CONSTRAINT `fk_coupons_items` + FOREIGN KEY (`itemId`) + REFERENCES `SQLiC5Shop`.`items` (`itemId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +-- ----------------------------------------------------- +-- Table `SQLiC5Shop`.`vipCoupons` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SQLiC5Shop`.`vipCoupons` ( + `vipCouponId` INT NOT NULL, + `perCentOff` INT NULL, + `couponCode` VARCHAR(128) NULL, + `itemId` INT NOT NULL, + PRIMARY KEY (`vipCouponId`), + INDEX `fk_vipCoupons_items1_idx` (`itemId` ASC), + CONSTRAINT `fk_vipCoupons_items1` + FOREIGN KEY (`itemId`) + REFERENCES `SQLiC5Shop`.`items` (`itemId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SQLiC5Shop`.`items` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SQLiC5Shop`; +INSERT INTO `SQLiC5Shop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (1, 'Pineapple', 30); +INSERT INTO `SQLiC5Shop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (2, 'Orange', 3000); +INSERT INTO `SQLiC5Shop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (3, 'Apple', 45); +INSERT INTO `SQLiC5Shop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (4, 'Banana', 15); + +COMMIT; + +-- ----------------------------------------------------- +-- Data for table `SQLiC5Shop`.`coupons` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SQLiC5Shop`; +INSERT INTO `SQLiC5Shop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (1, 100, 'PleaseTakeAFruit', 3); +INSERT INTO `SQLiC5Shop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (2, 100, 'FruitForFree', 3); +INSERT INTO `SQLiC5Shop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (3, 10, 'PleaseTakeAnOrange', 2); +INSERT INTO `SQLiC5Shop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (4, 50, 'HalfOffOranges', 2); +INSERT INTO `SQLiC5Shop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (5, 10, 'PleaseTakeABanana', 4); +INSERT INTO `SQLiC5Shop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (6, 50, 'HalfOffBananas', 4); + +COMMIT; + +-- ----------------------------------------------------- +-- Data for table `SQLiC5Shop`.`vipCoupons` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SQLiC5Shop`; +INSERT INTO `SQLiC5Shop`.`vipCoupons` (`vipCouponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (861267, 100, 'spcil\/|Pse3cr3etCouponStu.f4rU176', 2); + +COMMIT; + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `SqlChalFourSuperSecure` ; +CREATE SCHEMA IF NOT EXISTS `SqlChalFourSuperSecure` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `SqlChalFourSuperSecure` ; + +-- ====================================================== +-- SQL Injection Challenge 4 +-- ====================================================== + +-- ----------------------------------------------------- +-- Table `SqlChalFourSuperSecure`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SqlChalFourSuperSecure`.`users` ( + `idusers` INT NOT NULL AUTO_INCREMENT, + `userName` VARCHAR(45) NOT NULL, + `userPassword` VARCHAR(45) NOT NULL, + PRIMARY KEY (`idusers`), + UNIQUE INDEX `userName_UNIQUE` (`userName` ASC)) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlChalFourSuperSecure`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlChalFourSuperSecure`; +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (1, 'adam', '87i2ueeu2ndsedssda'); +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (2, 'player', '87iueeundsedssda'); +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (3, 'user', 'password'); +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (4, 'mark', 'password'); +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (5, 'sean', 'password'); +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (6, 'denihan', 'password'); +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (7, 'admin', "98y\'98hsadsoi!111,.,22ee"); +INSERT INTO `SqlChalFourSuperSecure`.`users` (`idusers`, `userName`, `userPassword`) VALUES (8, 'duggan', 'password'); + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- SqlChalSix Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `SqlChalSix` ; +CREATE SCHEMA IF NOT EXISTS `SqlChalSix` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `SqlChalSix` ; + +-- ----------------------------------------------------- +-- Table `SqlChalSix`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SqlChalSix`.`users` ( + `idusers` INT NOT NULL, + `userName` VARCHAR(45) NOT NULL, + `userPin` VARCHAR(16) NOT NULL, + `userQuestion` VARCHAR(128) NOT NULL, + `userAnswer` VARCHAR(191) NOT NULL, + `userAge` VARCHAR(16) NOT NULL, + PRIMARY KEY (`idusers`)) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlChalSix`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlChalSix`; +INSERT INTO `SqlChalSix`.`users` (`idusers`, `userName`, `userPin`, `userQuestion`, `userAnswer`, `userAge`) VALUES (1, 'George', '8367', 'What is your favourite Flower', 'A Red Rose', '23'); +INSERT INTO `SqlChalSix`.`users` (`idusers`, `userName`, `userPin`, `userQuestion`, `userAnswer`, `userAge`) VALUES (2, 'Brendan', '4685', 'What is the answer to this level?', '17f999a8b3fbfde54124d6e94b256a264652e5087b14622e1644c884f8a33f82', '98'); +INSERT INTO `SqlChalSix`.`users` (`idusers`, `userName`, `userPin`, `userQuestion`, `userAnswer`, `userAge`) VALUES (3, 'Sean', '1254', 'Your favourite Viking', 'Thor', '25'); +INSERT INTO `SqlChalSix`.`users` (`idusers`, `userName`, `userPin`, `userQuestion`, `userAnswer`, `userAge`) VALUES (4, 'Anthony', '7844', 'What game do I suck at?', 'All of the games', '84'); +INSERT INTO `SqlChalSix`.`users` (`idusers`, `userName`, `userPin`, `userQuestion`, `userAnswer`, `userAge`) VALUES (5, 'Owen', '4648', 'Favourite Sandwhich Topping', 'Peanutbutter', '33'); +INSERT INTO `SqlChalSix`.`users` (`idusers`, `userName`, `userPin`, `userQuestion`, `userAnswer`, `userAge`) VALUES (6, 'Eoin', '2653', 'Where did I holiday in the summer of 69?', 'The Dark Side of the Moon', '12'); +INSERT INTO `SqlChalSix`.`users` (`idusers`, `userName`, `userPin`, `userQuestion`, `userAnswer`, `userAge`) VALUES (7, 'David', '3598', 'This is how we get ants', "Don\'t get me started", '6'); + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- csrfChallengeEnumTokens Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `csrfChallengeEnumTokens` ; +CREATE SCHEMA IF NOT EXISTS `csrfChallengeEnumTokens` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `csrfChallengeEnumTokens` ; + +-- ----------------------------------------------------- +-- Table `csrfChallengeEnumTokens`.`csrfTokens` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `csrfChallengeEnumTokens`.`csrfTokens` ( + `userId` VARCHAR(64) NOT NULL, + `csrfTokenscol` VARCHAR(191) NULL, + PRIMARY KEY (`userId`)) +ENGINE = InnoDB; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- csrfChallengeFour Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `csrfChallengeFour` ; +CREATE SCHEMA IF NOT EXISTS `csrfChallengeFour` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `csrfChallengeFour` ; + +-- ----------------------------------------------------- +-- Table `csrfChallengeFour`.`csrfTokens` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `csrfChallengeFour`.`csrfTokens` ( + `userId` VARCHAR(64) NOT NULL, + `csrfTokenscol` VARCHAR(191) NULL, + PRIMARY KEY (`userId`)) +ENGINE = InnoDB; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- BrokenAuthAndSessMangChalFive Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- + +DROP SCHEMA IF EXISTS `BrokenAuthAndSessMangChalFive` ; +CREATE SCHEMA IF NOT EXISTS `BrokenAuthAndSessMangChalFive` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `BrokenAuthAndSessMangChalFive`; + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + + +-- ----------------------------------------------------- +-- Table `BrokenAuthAndSessMangChalFive`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `BrokenAuthAndSessMangChalFive`.`users` ( + `userId` INT NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `userPassword` VARCHAR(128) NOT NULL , + `userAddress` VARCHAR(128) NOT NULL , + `userRole` VARCHAR(8) NOT NULL DEFAULT 'guest' , + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `BrokenAuthAndSessMangChalFive`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `BrokenAuthAndSessMangChalFive`; +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (12, 'admin', 'default', 'zoidberg22@shepherd.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (321, 'administrator', 'default', 'buzzthebald@shepherd.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (3212, 'root', 'default', 'elitehacker@shepherd.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (634, 'superuser', 'default', 'superman@security.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (4524, 'privileged', 'default', 'spoiltbrat@security.com', 'admin'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (40, 'guest1', 'default', 'guest1@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (41, 'guest2', 'default', 'guest2@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (42, 'guest3', 'default', 'guest3@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (43, 'guest4', 'default', 'guest4@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (44, 'guest5', 'default', 'guest5@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (45, 'guest6', 'default', 'guest6@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (46, 'guest7', 'default', 'guest7@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (47, 'guest8', 'default', 'guest8@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (48, 'guest9', 'guest', 'guest9@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (49, 'guest11', 'guest', 'guest11@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (50, 'guest12', 'guest', 'guest12@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (51, 'guest13', 'guest', 'guest13@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (52, 'guest14', 'guest', 'guest14@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (53, 'guest15', 'guest', 'guest15@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (54, 'guest16', 'guest', 'guest16@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (55, 'guest17', 'guest', 'guest17@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (56, 'guest18', 'guest', 'guest18@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (57, 'guest19', 'guest', 'guest19@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (58, 'guest20', 'guest', 'guest20@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (59, 'guest21', 'guest', 'guest21@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (60, 'guest22', 'guest', 'guest22@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (61, 'guest23', 'guest', 'guest23@guest.com', 'guest'); +INSERT INTO `BrokenAuthAndSessMangChalFive`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (62, 'guest10', 'guest', 'guest10@guest.com', 'guest'); + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- Session Management Challenge Six Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `BrokenAuthAndSessMangChalSix` ; +CREATE SCHEMA IF NOT EXISTS `BrokenAuthAndSessMangChalSix` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `BrokenAuthAndSessMangChalSix` ; + +-- ----------------------------------------------------- +-- Table `BrokenAuthAndSessMangChalSix`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `BrokenAuthAndSessMangChalSix`.`users` ( + `userId` INT NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `userPassword` VARCHAR(128) NOT NULL , + `userAddress` VARCHAR(128) NOT NULL , + `secretQuestion` VARCHAR(191) NOT NULL , + `secretAnswer` VARCHAR(128) NOT NULL, + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `BrokenAuthAndSessMangChalSix`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `BrokenAuthAndSessMangChalSix`; +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (1224, 'manager', '!148972hsfalkjlkfi381', 'zoidberg23@shepherd.com', 'What is the first name of the person you first kissed?', 'Lena Andrysiak'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (1225, 'sean', '!148972hsfalkjlkfi381', 'zoidberg24@shepherd.com', 'What is the first name of the person you first kissed?', 'Ronit Tornincasa'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (3214, 'administrator', '!148972hsfalkjlkfi381', 'buzzthebald@shepherd.com','What is the last name of the teacher who gave you your first failing grade?', 'Aran Keegan'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (3212, 'root', '!148972hsfalkjlkfi381', 'elitehacker@shepherd.com','What is the name of the place your wedding reception was held?', 'Deerburn Hotel'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6344, 'superuser', '!148972hsfalkjlkfi381', 'superman@security.com', 'Who was the first person to beat you up when you were 8 years old?', 'Lileas Lockwood'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (4524, 'privileged', '1489!72hsfalkjlkfi381', 'spoiltbrat@security.com', 'What was the name of the person who stole your TV the second time?', 'Olwen Sordi'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6343, 'mark', '148!972hsfalkjlkfi381', 'superman2@security.com', 'Who is your favourite Barista?', 'Buzz Fendall'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6342, 'markdenihan', '148!972hsfalkjlkfi381', 'superman3@security.com', 'Who is your most favourite person you have not met?', 'Etna Filippi'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6341, 'seanduggan', '148972!hsfalkjlkfi381', 'superman4@security.com', 'Who is your most favourite person you have not met?', 'Emily Fabian'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6551, 'rootuser', '14897!2hsfalkjlkfi381', 'superman6@security.com', 'Who is your most favourite person you have not met?', 'Leola Naggia'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6552, 'adminuser', '1489!72hsfalkjlkfi381', 'superman7@security.com', 'Who is your most favourite person you have not met?', 'Gladys Gabrielli'); +INSERT INTO `BrokenAuthAndSessMangChalSix`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6559, 'shepherd', '148972hsfalk!jlkfi381', 'superman8@security.com', 'Who is your most favourite person you have not met?', 'Morag Bristol'); + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- Session Management Challenge Seven Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `BrokenAuthAndSessMangChalSeven` ; +CREATE SCHEMA IF NOT EXISTS `BrokenAuthAndSessMangChalSeven` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `BrokenAuthAndSessMangChalSeven` ; + +-- ----------------------------------------------------- +-- Table `BrokenAuthAndSessMangChalSeven`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `BrokenAuthAndSessMangChalSeven`.`users` ( + `userId` INT NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `userPassword` VARCHAR(128) NOT NULL , + `userAddress` VARCHAR(128) NOT NULL , + `secretQuestion` VARCHAR(191) NOT NULL , + `secretAnswer` VARCHAR(128) NOT NULL, + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `BrokenAuthAndSessMangChalSeven`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `BrokenAuthAndSessMangChalSeven`; +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (1224, 'manager', '!148972hsfalkjlkfi381', 'zoidberg23@shepherd.com', 'What is your favourite flower?', 'Jade Vine'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (1225, 'sean', '!148972hsfalkjlkfi381', 'zoidberg24@shepherd.com', 'What is your favourite flower?', 'Corpse Flower'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (3214, 'administrator', '!148972hsfalkjlkfi381', 'buzzthebald@shepherd.com','What is your favourite flower?', 'Gibraltar Campion'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (3212, 'root', '!148972hsfalkjlkfi381', 'elitehacker@shepherd.com', 'What is your favourite flower?', 'Franklin Tree'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6344, 'superuser', '!148972hsfalkjlkfi381', 'superman@security.com', 'What is your favourite flower?', 'Jade Vine'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (4524, 'privileged', '1489!72hsfalkjlkfi381', 'spoiltbrat@security.com', 'What is your favourite flower?', 'Middlemist Red'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6343, 'mark', '148!972hsfalkjlkfi381', 'superman2@security.com', 'What is your favourite flower?', 'Chocolate Cosmos'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6342, 'markdenihan', '148!972hsfalkjlkfi381', 'superman3@security.com', 'What is your favourite flower?', 'Ghost Orchid'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6341, 'seanduggan', '148972!hsfalkjlkfi381', 'superman4@security.com', 'What is your favourite flower?', 'Jade Vine'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6551, 'rootuser', '14897!2hsfalkjlkfi381', 'superman6@security.com', 'What is your favourite flower?', 'Ghost Orchid'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6552, 'adminuser', '1489!72hsfalkjlkfi381', 'superman7@security.com', 'What is your favourite flower?', 'Corpse Flower'); +INSERT INTO `BrokenAuthAndSessMangChalSeven`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `secretQuestion`, `secretAnswer`) VALUES (6559, 'shepherd', '148972hsfalk!jlkfi381', 'superman8@security.com', 'What is your favourite flower?', 'Gibraltar Campion'); + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- CryptShop Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `CryptShop` ; +CREATE SCHEMA IF NOT EXISTS `CryptShop` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `CryptShop` ; + +-- ----------------------------------------------------- +-- Table `CryptShop`.`items` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `CryptShop`.`items` ( + `itemId` INT NOT NULL, + `itemName` VARCHAR(45) NULL, + `itemCost` INT NULL, + PRIMARY KEY (`itemId`)) +ENGINE = InnoDB; + +-- ----------------------------------------------------- +-- Table `CryptShop`.`coupons` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `CryptShop`.`coupons` ( + `couponId` INT NOT NULL, + `perCentOff` INT NULL, + `couponCode` VARCHAR(128) NULL, + `itemId` INT NOT NULL, + PRIMARY KEY (`couponId`), + INDEX `fk_coupons_items_idx` (`itemId` ASC), + CONSTRAINT `fk_coupons_items` + FOREIGN KEY (`itemId`) + REFERENCES `CryptShop`.`items` (`itemId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `CryptShop`.`items` +-- ----------------------------------------------------- +START TRANSACTION; +USE `CryptShop`; +INSERT INTO `CryptShop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (1, 'Pineapple', 30); +INSERT INTO `CryptShop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (2, 'Orange', 3000); +INSERT INTO `CryptShop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (3, 'Apple', 45); +INSERT INTO `CryptShop`.`items` (`itemId`, `itemName`, `itemCost`) VALUES (4, 'Banana', 15); + +COMMIT; + +-- ----------------------------------------------------- +-- Data for table `CryptShop`.`coupons` +-- ----------------------------------------------------- +START TRANSACTION; +USE `CryptShop`; +INSERT INTO `CryptShop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (1, 100, 'PleaseTakeAFruit', 3); +INSERT INTO `CryptShop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (2, 100, 'FruitForFree', 3); +INSERT INTO `CryptShop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (3, 10, 'PleaseTakeAnOrange', 2); +INSERT INTO `CryptShop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (4, 50, 'HalfOffOranges', 2); +INSERT INTO `CryptShop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (5, 10, 'PleaseTakeABanana', 4); +INSERT INTO `CryptShop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (6, 50, 'HalfOffBananas', 4); +INSERT INTO `CryptShop`.`coupons` (`couponId`, `perCentOff`, `couponCode`, `itemId`) VALUES (432197, 100, 'e!c!3etZoumo@Stu4rU176', 2); +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- Failure to Restrict URL Access Challenge Three Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `UrlAccessThree` ; +CREATE SCHEMA IF NOT EXISTS `UrlAccessThree` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `UrlAccessThree` ; + +-- ----------------------------------------------------- +-- Table `UrlAccessThree`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `UrlAccessThree`.`users` ( + `userId` INT NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `userPassword` VARCHAR(128) NOT NULL , + `userAddress` VARCHAR(128) NOT NULL , + `userRole` VARCHAR(32) NOT NULL, + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `UrlAccessThree`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `UrlAccessThree`; +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (1223, 'aGuest', '!14897-hs.alNj.kFim81', 'zoidberg23@shepherd.com', 'guest'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (1224, 'manager', '!14897-hs.alNj.kFim81', 'zoidberg23@shepherd.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (1225, 'sean', '!14897-hs.alNj.kFim81', 'zoidberg24@shepherd.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (3214, 'administrator', '!14897-hs.alNj.kFim81', 'buzzthebald@shepherd.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (3212, 'root', '!14897-hs.alNj.kFim81', 'elitehacker@shepherd.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6344, 'superuser', '!14897-hs.alNj.kFim81', 'superman@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6345, 'MrJohnReillyTheSecond', '!14897-hs.alNj.kFim81', 'MrJohnReillyTheSecond@security.com', 'superadmin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6346, 'megauser', '!14897-hs.alNj.kFim81', 'megaman@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6347, 'hyperuser', '!14897-hs.alNj.kFim81', 'hmegaman@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6348, 'godzilla', '!14897-hs.alNj.kFim81', 'godzilla@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6349, 'kinguser', '!14897-hs.alNj.kFim81', 'kinguser@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (4524, 'privileged', '1489!72hsfalkjlkfi381', 'spoiltbrat@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6343, 'mark', '148!97-hs.alNj.kFim81', 'superman2@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6342, 'markdenihan', '148!97-hs.alNj.kFim81', 'superman3@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6341, 'seanduggan', '148972!hsfalkjlkfi381', 'superman4@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6551, 'rootuser', '14897!2hsfalkjlkfi381', 'superman6@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6552, 'adminuser', '1489!72hsfalkjlkfi381', 'superman7@security.com', 'admin'); +INSERT INTO `UrlAccessThree`.`users` (`userId`, `userName`, `userPassword`, `userAddress`, `userRole`) VALUES (6559, 'shepherd', '148972hsfalk!jlkfi381', 'superman8@security.com', 'admin'); + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- sqlInjectSeven Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- + +DROP SCHEMA IF EXISTS `sqlInjectSeven` ; +CREATE SCHEMA IF NOT EXISTS `sqlInjectSeven` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `sqlInjectSeven`; + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + + +-- ----------------------------------------------------- +-- Table `sqlInjectSeven`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `sqlInjectSeven`.`users` ( + `userId` INT NOT NULL , + `userName` VARCHAR(32) NOT NULL , + `userPassword` VARCHAR(128) NOT NULL , + `userEmail` VARCHAR(128) NOT NULL , + `userRole` VARCHAR(8) NOT NULL DEFAULT 'default' , + PRIMARY KEY (`userId`) ) +ENGINE = InnoDB; + + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `sqlInjectSeven`.`users` +-- ----------------------------------------------------- +START TRANSACTION; +USE `sqlInjectSeven`; +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (40, 'User 1', 'de1027fnNys6687as!283619fj1237fault', 'UserJohn1@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (41, 'User 2', 'd128361027fnNys6687as!9fj1237efault', 'UserJim2@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (42, 'User 3', 'defa1283619f027fnNys6687as!j1237ult', 'UserJone3@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (43, 'User 4', 'd1283619fj12027fnNys6687as!37efault', 'UserBell4@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (44, 'User 5', 'defau1283619fj1237lt', 'UserConan5@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (45, 'User 6', 'de1283619fj1237fault', 'UserSmioth6@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (46, 'User 7', 'def1d88027fnNys6687as!sd&dsault', 'UserHat7@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (47, 'User 8', 'def1d027fnNys6687as!88sd&dsault', 'UserPage8@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (48, 'User 9', 'defaul027fnNys6687as!1d88sd&dst', 'UserCube9@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (49, 'User 11', 'd1d88027fnNys6687as!sd&dsefault', 'MrsJohn1@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (50, 'User 12', 'defau027fnNys6687as!l1d88sd&dst', 'MrsJim2@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (51, 'User 13', 'def_926diUUscnaosOault', 'MrsJone3@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (52, 'User 14', 'd_926diUUscnaosOefault', 'MrsBell4@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (53, 'User 15', 'defaul_926diUUscnaosOt', 'MrsConan5@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (54, 'User 16', 'de_926diUUscnaosOfault', 'MrsSmioth6@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (55, 'User 17', 'defaul_926diUUscnaosOt', 'MrsHat7@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (56, 'User 18', 'de_926diUUscnaosOfault', 'MrsPage8@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (57, 'User 19', 'defa_926diUUscnaosOult', 'MrsCube9@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (58, 'User 20', 'd_926diUUscnaosOefault', 'Mr20@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (59, 'User 21', 'defa1027fnNys6687as!ult', 'Mr2John1@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (60, 'User 22', 'de027fnNys6687as!fault', 'Mr2Jim2@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (61, 'User 23', 'defau027fnNys6687as!lt', 'Mr2Jone3@User.com', 'default'); +INSERT INTO `sqlInjectSeven`.`users` (`userId`, `userName`, `userPassword`, `userEmail`, `userRole`) VALUES (62, 'User 10', 'def027fnNys6687as!ault', 'Mrs0@User.com', 'default'); + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- securityMisconfigStealToken Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `securityMisconfigStealToken` ; +CREATE SCHEMA IF NOT EXISTS `securityMisconfigStealToken` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `securityMisconfigStealToken` ; + +-- ----------------------------------------------------- +-- Table `securityMisconfigStealToken`.`tokens` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `securityMisconfigStealToken`.`tokens` ( + `idtokens` INT NOT NULL AUTO_INCREMENT, + `userId` VARCHAR(64) NULL, + `token` VARCHAR(64) NULL, + PRIMARY KEY (`idtokens`), + UNIQUE INDEX `userId_UNIQUE` (`userId` ASC), + UNIQUE INDEX `token_UNIQUE` (`token` ASC)) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- getToken Procedure +USE `securityMisconfigStealToken`; +DELIMITER $$ +CREATE PROCEDURE `securityMisconfigStealToken`.`getToken` (IN theUserId VARCHAR(64)) +BEGIN +DECLARE tokenExists INT; +COMMIT; +SELECT count(token) FROM `securityMisconfigStealToken`.`tokens` WHERE userId = theUserId INTO tokenExists; +IF (tokenExists < 1) THEN + INSERT INTO tokens (userId, token) VALUES (theUserId, SHA2(CONCAT(RAND(), now()), 256)); + COMMIT; +END IF; +SELECT token FROM tokens WHERE userId = theUserId; +END +; +$$ + +DELIMITER ; + +-- validToken Procedure +USE `securityMisconfigStealToken`; +DELIMITER $$ +CREATE PROCEDURE `securityMisconfigStealToken`.`validToken` (IN theUserId VARCHAR(64), theToken VARCHAR(64)) +BEGIN +COMMIT; +SELECT count(token) FROM `securityMisconfigStealToken`.`tokens` WHERE userId != theUserId AND token = theToken; +END +; +$$ + +DELIMITER ; + +COMMIT; + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- DirectObjectBank Schema +-- ----------------------------------------------------- +-- ----------------------------------------------------- +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +DROP SCHEMA IF EXISTS `directObjectBank` ; +CREATE SCHEMA IF NOT EXISTS `directObjectBank` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `directObjectBank` ; + +-- ----------------------------------------------------- +-- Table `directObjectBank`.`bankAccounts` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `directObjectBank`.`bankAccounts` ( + `account_number` INT NOT NULL AUTO_INCREMENT, + `account_holder` VARCHAR(45) NOT NULL, + `account_password` VARCHAR(191) NOT NULL, + `account_balance` FLOAT NOT NULL DEFAULT 5, + PRIMARY KEY (`account_number`), + UNIQUE INDEX `account_holder_UNIQUE` (`account_holder` ASC)) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `directObjectBank`.`bankAccounts` +-- ----------------------------------------------------- +START TRANSACTION; +USE `directObjectBank`; +INSERT INTO `directObjectBank`.`bankAccounts` (`account_number`, `account_holder`, `account_password`, `account_balance`) VALUES (0, 'Mr. Banks', 'SignInImpossibleBecauseNotHashed', 10000000000); + +COMMIT; + +-- BankAuth Procedure +USE `directObjectBank`; +DELIMITER $$ +CREATE PROCEDURE `directObjectBank`.`bankAuth` (IN theUserId VARCHAR(45), thePass VARCHAR(191)) +BEGIN +COMMIT; +SELECT account_number, account_holder FROM `directObjectBank`.`bankAccounts` WHERE account_holder = theUserId AND account_password = SHA2(thePass, 256); +END +; +$$ + +DELIMITER ; + +-- CurrentFunds Procedure +USE `directObjectBank`; +DELIMITER $$ +CREATE PROCEDURE `directObjectBank`.`currentFunds` (IN theBankAccountNumber VARCHAR(45)) +BEGIN +COMMIT; +SELECT account_balance FROM `directObjectBank`.`bankAccounts` WHERE account_number = theBankAccountNumber; +END +; +$$ + +DELIMITER ; + +-- transferFunds Procedure +USE `directObjectBank`; +DELIMITER $$ +CREATE PROCEDURE `directObjectBank`.`transferFunds` (IN theGiverAccountNumber VARCHAR(45), IN theRecieverAccountNumber VARCHAR(45), IN theAmmount FLOAT) +BEGIN +COMMIT; +UPDATE `directObjectBank`.`bankAccounts` + SET account_balance = account_balance - theAmmount + WHERE account_number = theGiverAccountNumber; +UPDATE `directObjectBank`.`bankAccounts` + SET account_balance = account_balance + theAmmount + WHERE account_number = theRecieverAccountNumber; +COMMIT; +END +; +$$ + +DELIMITER ; + +-- createAccount Procedure +USE `directObjectBank`; +DELIMITER $$ +CREATE PROCEDURE `directObjectBank`.`createAccount` (IN accountHolder VARCHAR(45), IN accountPassword VARCHAR(191)) +BEGIN +COMMIT; +INSERT INTO `directObjectBank`.`bankAccounts` (`account_holder`, `account_password`, `account_balance`) VALUES (accountHolder, SHA2(accountPassword, 256), 0); +COMMIT; +END +; +$$ + +DELIMITER ; + +COMMIT; + +-- ====================================================== +-- SQL Stored Proecure Challenge +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `SqlChalStoredProc` ; +CREATE SCHEMA IF NOT EXISTS `SqlChalStoredProc` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `SqlChalStoredProc` ; + +-- ----------------------------------------------------- +-- Table `SqlChalStoredProc`.`customers` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SqlChalStoredProc`.`customers` ( + `customerId` VARCHAR(64) NOT NULL , + `customerName` VARCHAR(32) NOT NULL , + `customerAddress` VARCHAR(128) NOT NULL , + `comment` LONGTEXT NULL , + PRIMARY KEY (`customerId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlChalStoredProc`.`customers` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlChalStoredProc`; +INSERT INTO `SqlChalStoredProc`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('019ce129ee8960a6b875b20095705d53f8c7b0ca', 'John Fits', 'crazycat@example.com', NULL); +INSERT INTO `SqlChalStoredProc`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('44e2bdc1059903f464e5ba9a34b927614d7fee55', 'Rita Hanolan', 'the1night2before3four@exampleEmails.com', 'Well Done! The Result key is d9c5757c1c086d02d491cbe46a941ecde5a65d523de36ac1bfed8dd4dd9994c8'); +INSERT INTO `SqlChalStoredProc`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('05159435826869ccfd76d77a2ed4ba7c2023f0cb', 'Rubix Man', 'manycolours@cube.com', NULL); +INSERT INTO `SqlChalStoredProc`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('6c5c26a1deccf4a87059deb0a3fb463ff7d62fd5', 'Paul O Brien', 'sixshooter@deaf.com', NULL); + +COMMIT; + +-- findUser Procedure +USE `SqlChalStoredProc`; +DELIMITER $$ +CREATE PROCEDURE `SqlChalStoredProc`.`findUser` (IN theAddress VARCHAR(128)) +BEGIN +COMMIT; +SELECT * FROM customers WHERE customerAddress = theAddress; +END +; +$$ + +DELIMITER ; + +COMMIT; + +-- ----------------------------------------------------- +-- ====================================================== +-- ====================================================== +-- SQL Injection Poor Escaping (email) +-- ====================================================== + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +DROP SCHEMA IF EXISTS `SqlPoorEscape` ; +CREATE SCHEMA IF NOT EXISTS `SqlPoorEscape` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; +USE `SqlPoorEscape` ; + +-- ----------------------------------------------------- +-- Table `SqlPoorEscape`.`customers` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `SqlPoorEscape`.`customers` ( + `customerId` VARCHAR(64) NOT NULL , + `customerName` VARCHAR(32) NOT NULL , + `customerAddress` VARCHAR(35) NOT NULL , + `comment` LONGTEXT NULL , + PRIMARY KEY (`customerId`) ) +ENGINE = InnoDB; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +-- Data for table `SqlPoorEscape`.`customers` +-- ----------------------------------------------------- +START TRANSACTION; +USE `SqlPoorEscape`; +INSERT INTO `SqlPoorEscape`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('019h53d60a6b875b20095705d53f8c7b0ca', 'John Fits', 'thislifecouldbethelast@example.com', NULL); +INSERT INTO `SqlPoorEscape`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('44e2bdc105ifdua464e5ba9a34b927614d7fee55', 'Rita Hanolan', 'dontfoolyourself@example.com', 'Well Done! The Result key is 0dcf9078ba5d878f9e23809ac8f013d1a08fdc8f12c5036f1a4746dbe86c0aac'); +INSERT INTO `SqlPoorEscape`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('051594asdjd6869ccfd76d77a2ed4ba7c2023f0cb', 'Rubix Man', 'dontkidyourself@cube.com', NULL); +INSERT INTO `SqlPoorEscape`.`customers` (`customerId`, `customerName`, `customerAddress`, `comment`) VALUES ('6c5c26adjdccf4a87059deb0a3fb463ff7d62fd5', 'Paul O Brien', 'andweretooyoungtosee@deaf.com', NULL); + +COMMIT; + + +-- ----------------------------------------------------- +-- ----------------------------------------------------- +-- Module Schema Users +-- ----------------------------------------------------- +-- ----------------------------------------------------- + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +commit; + +GRANT USAGE ON *.* TO 'userLookUuuup'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'userLookUuuup'@'localhost'; +CREATE USER 'userLookUuuup'@'localhost' IDENTIFIED BY 'youMomaSoTh1n'; +GRANT SELECT ON `SqlChalSix`.`users` TO 'userLookUuuup'@'localhost'; + +GRANT USAGE ON *.* TO 'DnTPubUser'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'DnTPubUser'@'localhost'; +CREATE USER 'DnTPubUser'@'localhost' IDENTIFIED BY 'ch3fBrownSa4useIsS00000Go0d'; +GRANT SELECT ON `SQLiC5Shop`.`items` TO 'DnTPubUser'@'localhost'; +GRANT SELECT ON `SQLiC5Shop`.`coupons` TO 'DnTPubUser'@'localhost'; + +GRANT USAGE ON *.* TO 'DnTVipUser'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'DnTVipUser'@'localhost'; +CREATE USER 'DnTVipUser'@'localhost' IDENTIFIED BY 'ch3fBrownSa4useIsS00000Go0d'; +GRANT SELECT ON `SQLiC5Shop`.`items` TO 'DnTVipUser'@'localhost'; +GRANT SELECT ON `SQLiC5Shop`.`vipCoupons` TO 'DnTVipUser'@'localhost'; + +GRANT USAGE ON *.* TO 'DnTPurUser'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'DnTPurUser'@'localhost'; +CREATE USER 'DnTPurUser'@'localhost' IDENTIFIED BY 'ch3fBrownSa4useIsS00000Go0d'; +GRANT SELECT ON `SQLiC5Shop`.`items` TO 'DnTPurUser'@'localhost'; +GRANT SELECT ON `SQLiC5Shop`.`coupons` TO 'DnTPurUser'@'localhost'; +GRANT SELECT ON `SQLiC5Shop`.`vipCoupons` TO 'DnTPurUser'@'localhost'; + +GRANT USAGE ON *.* TO 'firstBloodyMessL'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'firstBloodyMessL'@'localhost'; +CREATE USER 'firstBloodyMessL'@'localhost' IDENTIFIED BY 'firstBlooded'; +GRANT SELECT ON `SqlInjLesson`.`tb_users` TO 'firstBloodyMessL'@'localhost'; + +GRANT USAGE ON *.* TO 'CharlieSeabrook'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'CharlieSeabrook'@'localhost'; +CREATE USER 'CharlieSeabrook'@'localhost' IDENTIFIED BY 'shallowHal'; +GRANT SELECT ON `SqlChalEmail`.`customers` TO 'CharlieSeabrook'@'localhost'; + +GRANT USAGE ON *.* TO 'RightGuard3d'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'RightGuard3d'@'localhost'; +CREATE USER 'RightGuard3d'@'localhost' IDENTIFIED BY 'logic3Speaker'; +GRANT SELECT ON `SqlChalOne`.`customers` TO 'RightGuard3d'@'localhost'; + +GRANT USAGE ON *.* TO 'HdmiNoSignal'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'HdmiNoSignal'@'localhost'; +CREATE USER 'HdmiNoSignal'@'localhost' IDENTIFIED BY '1nforma1ion'; +GRANT SELECT ON `SqlChalThree`.`customers` TO 'HdmiNoSignal'@'localhost'; + +GRANT USAGE ON *.* TO 'randomUserName'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'randomUserName'@'localhost'; +CREATE USER 'randomUserName'@'localhost' IDENTIFIED BY 'c4utionHoT'; +GRANT SELECT ON `BrokenAuthAndSessMangChalTwo`.`users` TO 'randomUserName'@'localhost'; +GRANT UPDATE ON `BrokenAuthAndSessMangChalTwo`.`users` TO 'randomUserName'@'localhost'; + +GRANT USAGE ON *.* TO 'doveM3nCare'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'doveM3nCare'@'localhost'; +CREATE USER 'doveM3nCare'@'localhost' IDENTIFIED BY 'plusm0r3'; +GRANT SELECT ON `BrokenAuthAndSessMangChalThree`.`users` TO 'doveM3nCare'@'localhost'; +GRANT UPDATE ON `BrokenAuthAndSessMangChalThree`.`users` TO 'doveM3nCare'@'localhost'; + +GRANT USAGE ON *.* TO 'murr4yFe1ld'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'murr4yFe1ld'@'localhost'; +CREATE USER 'murr4yFe1ld'@'localhost' IDENTIFIED BY '4gainst3ngl4nd'; +GRANT SELECT ON `directObjectRefChalOne`.`users` TO 'murr4yFe1ld'@'localhost'; + +GRANT USAGE ON *.* TO 'd3nn1sM4nely'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'd3nn1sM4nely'@'localhost'; +CREATE USER 'd3nn1sM4nely'@'localhost' IDENTIFIED BY 'Pr0ductM4rket1ngIssu3s'; +GRANT SELECT ON `directObjectRefChalTwo`.`users` TO 'd3nn1sM4nely'@'localhost'; + +GRANT USAGE ON *.* TO 'secureDood'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'secureDood'@'localhost'; +CREATE USER 'secureDood'@'localhost' IDENTIFIED BY 'iCantEv3n'; +GRANT SELECT ON `SqlChalFourSuperSecure`.`users` TO 'secureDood'@'localhost'; + +GRANT USAGE ON *.* TO 'csrfChalEnuer'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'csrfChalEnuer'@'localhost'; +CREATE USER 'csrfChalEnuer'@'localhost' IDENTIFIED BY 'c4n1bUplZ'; +GRANT SELECT ON `csrfChallengeEnumTokens`.`csrfTokens` TO 'csrfChalEnuer'@'localhost'; +GRANT INSERT ON `csrfChallengeEnumTokens`.`csrfTokens` TO 'csrfChalEnuer'@'localhost'; +GRANT UPDATE ON `csrfChallengeEnumTokens`.`csrfTokens` TO 'csrfChalEnuer'@'localhost'; + +GRANT USAGE ON *.* TO 'l3tsg0cra'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'l3tsg0cra'@'localhost'; +CREATE USER 'l3tsg0cra'@'localhost' IDENTIFIED BY '83ururMa'; +GRANT SELECT ON `BrokenAuthAndSessMangChalFive`.`users` TO 'l3tsg0cra'@'localhost'; +GRANT UPDATE ON `BrokenAuthAndSessMangChalFive`.`users` TO 'l3tsg0cra'@'localhost'; + +GRANT USAGE ON *.* TO 'csrfChalFour'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'csrfChalFour'@'localhost'; +CREATE USER 'csrfChalFour'@'localhost' IDENTIFIED BY 'R1n13U2pv'; +GRANT SELECT ON `csrfChallengeFour`.`csrfTokens` TO 'csrfChalFour'@'localhost'; +GRANT INSERT ON `csrfChallengeFour`.`csrfTokens` TO 'csrfChalFour'@'localhost'; +GRANT UPDATE ON `csrfChallengeFour`.`csrfTokens` TO 'csrfChalFour'@'localhost'; + +GRANT USAGE ON *.* TO 'randomMoFoName'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'randomMoFoName'@'localhost'; +CREATE USER 'randomMoFoName'@'localhost' IDENTIFIED BY 'c2zXlq_ZoT'; +GRANT SELECT ON `BrokenAuthAndSessMangChalSix`.`users` TO 'randomMoFoName'@'localhost'; + +GRANT USAGE ON *.* TO 'randomFlower'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'randomFlower'@'localhost'; +CREATE USER 'randomFlower'@'localhost' IDENTIFIED BY 'c21-le_6oT'; +GRANT SELECT ON `BrokenAuthAndSessMangChalSeven`.`users` TO 'randomFlower'@'localhost'; + +GRANT USAGE ON *.* TO 'tSwsfUSer'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'tSwsfUSer'@'localhost'; +CREATE USER 'tSwsfUSer'@'localhost' IDENTIFIED BY '9s31iusd-n'; +GRANT SELECT ON `CryptShop`.`items` TO 'tSwsfUSer'@'localhost'; +GRANT SELECT ON `CryptShop`.`coupons` TO 'tSwsfUSer'@'localhost'; + +GRANT USAGE ON *.* TO 'yourOrEll'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'yourOrEll'@'localhost'; +CREATE USER 'yourOrEll'@'localhost' IDENTIFIED BY '91dj3:766f'; +GRANT SELECT ON `UrlAccessThree`.`users` TO 'yourOrEll'@'localhost'; + +GRANT USAGE ON *.* TO 'r1ndomFlower'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'r1ndomFlower'@'localhost'; +CREATE USER 'r1ndomFlower'@'localhost' IDENTIFIED BY 'c41-l2_6oT'; +GRANT SELECT ON `sqlInjectSeven`.`users` TO 'r1ndomFlower'@'localhost'; + +GRANT USAGE ON *.* TO 'al1th3Tokens'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'al1th3Tokens'@'localhost'; +CREATE USER 'al1th3Tokens'@'localhost' IDENTIFIED BY '87SDO63yUN.'; +GRANT SELECT ON `securityMisconfigStealToken`.`tokens` TO 'al1th3Tokens'@'localhost'; +GRANT INSERT ON `securityMisconfigStealToken`.`tokens` TO 'al1th3Tokens'@'localhost'; +GRANT EXECUTE ON PROCEDURE `securityMisconfigStealToken`.`getToken` TO 'al1th3Tokens'@'localhost'; +GRANT EXECUTE ON PROCEDURE `securityMisconfigStealToken`.`validToken` TO 'al1th3Tokens'@'localhost'; + +GRANT USAGE ON *.* TO 'theBankMan'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'theBankMan'@'localhost'; +CREATE USER 'theBankMan'@'localhost' IDENTIFIED BY 'B4ndkm.M98n'; +GRANT SELECT ON `directObjectBank`.`bankAccounts` TO 'theBankMan'@'localhost'; +GRANT INSERT ON `directObjectBank`.`bankAccounts` TO 'theBankMan'@'localhost'; +GRANT UPDATE ON `directObjectBank`.`bankAccounts` TO 'theBankMan'@'localhost'; +GRANT EXECUTE ON PROCEDURE `directObjectBank`.`bankAuth` TO 'theBankMan'@'localhost'; +GRANT EXECUTE ON PROCEDURE `directObjectBank`.`currentFunds` TO 'theBankMan'@'localhost'; +GRANT EXECUTE ON PROCEDURE `directObjectBank`.`transferFunds` TO 'theBankMan'@'localhost'; +GRANT EXECUTE ON PROCEDURE `directObjectBank`.`createAccount` TO 'theBankMan'@'localhost'; + +GRANT USAGE ON *.* TO 'procChalUser'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'procChalUser'@'localhost'; +CREATE USER 'procChalUser'@'localhost' IDENTIFIED BY 'k61dSmsM*8n'; +GRANT SELECT ON `SqlChalStoredProc`.`customers` TO 'procChalUser'@'localhost'; +GRANT EXECUTE ON PROCEDURE `SqlChalStoredProc`.`findUser` TO 'procChalUser'@'localhost'; + +GRANT USAGE ON *.* TO 'imVideoingThis'@'localhost' IDENTIFIED BY 'password'; +DROP USER 'imVideoingThis'@'localhost'; +CREATE USER 'imVideoingThis'@'localhost' IDENTIFIED BY 'auoi@7723dj'; +GRANT SELECT ON `SqlPoorEscape`.`customers` TO 'imVideoingThis'@'localhost'; diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/my.cnf b/modules/vulnerabilities/unix/web_training/security_shepherd/files/my.cnf new file mode 100644 index 000000000..af0d1e929 --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/files/my.cnf @@ -0,0 +1,15 @@ +[client-server] +# Port or socket location where to connect +# port = 3306 +socket = /run/mysqld/mysqld.sock + +# Import all .cnf files from configuration directory +!includedir /etc/mysql/conf.d/ +!includedir /etc/mysql/mariadb.conf.d/ + +[mysqld] +skip-host-cache +datadir = /var/lib/mysql +!includedir /etc/mysql/conf.d/ +ssl=0 +bind-address=* diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/server.xml b/modules/vulnerabilities/unix/web_training/security_shepherd/files/server.xml new file mode 100644 index 000000000..2e60e825e --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/files/server.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/shepherdKeystore.p12 b/modules/vulnerabilities/unix/web_training/security_shepherd/files/shepherdKeystore.p12 new file mode 100644 index 000000000..2abc1f588 Binary files /dev/null and b/modules/vulnerabilities/unix/web_training/security_shepherd/files/shepherdKeystore.p12 differ diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/files/web.xml b/modules/vulnerabilities/unix/web_training/security_shepherd/files/web.xml new file mode 100644 index 000000000..d5bf4cda6 --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/files/web.xml @@ -0,0 +1,4706 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3ds + image/x-3ds + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + appcache + text/cache-manifest + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + arc + application/x-freearc + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + blb + application/x-blorb + + + blorb + application/x-blorb + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + caf + audio/x-caf + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cb7 + application/x-cbr + + + cba + application/x-cbr + + + cbr + application/x-cbr + + + cbt + application/x-cbr + + + cbz + application/x-cbr + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cfs + application/x-cfs-compressed + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dart + application/vnd.dart + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dbk + application/docbook+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dgc + application/x-dgc-compressed + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/x-apple-diskimage + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + emf + application/x-msmetafile + + + eml + message/rfc822 + + + emma + application/emma+xml + + + emz + application/x-msmetafile + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esa + application/vnd.osgi.subsystem + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + eva + application/x-eva + + + evy + application/x-envoy + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcdt + application/vnd.adobe.formscentral.fcdt + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gam + application/x-tads + + + gbr + application/rpki-ghostbusters + + + gca + application/x-gca-compressed + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gml + application/gml+xml + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gpx + application/gpx+xml + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gramps + application/x-gramps-xml + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxf + application/gxf + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + install + application/x-install-instructions + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/x-iso9660-image + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jsonml + application/jsonml+json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + kpxx + application/vnd.ds-keypoint + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/x-lzh-compressed + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + lnk + application/x-ms-shortcut + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/x-lzh-compressed + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mar + application/octet-stream + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + metalink + application/metalink+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mie + application/x-mie + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mk3d + video/x-matroska + + + mka + audio/x-matroska + + + mks + video/x-matroska + + + mkv + video/x-matroska + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mng + video/x-mng + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + nfo + text/x-nfo + + + ngdat + application/vnd.nokia.n-gage.data + + + nitf + application/vnd.nitf + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsc + application/x-conference + + + nsf + application/vnd.lotus-notes + + + ntf + application/vnd.nitf + + + nzb + application/x-nzb + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + obj + application/x-tgif + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + omdoc + application/omdoc+xml + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + opml + text/x-opml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + font/otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + ris + application/x-research-info-systems + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rmvb + application/vnd.rn-realmedia-vbr + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + s3m + audio/s3m + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sfv + text/x-sfv + + + sgi + image/sgi + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sid + image/x-mrsid-image + + + sig + application/pgp-signature + + + sil + audio/silk + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smv + video/x-smv + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + sql + application/x-sql + + + src + application/x-wais-source + + + srt + application/x-subrip + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + ssdl + application/ssdl+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + t3 + application/x-t3vm-image + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + tga + image/x-tga + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + font/collection + + + ttf + font/ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + ulx + application/x-glulx + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vob + video/x-ms-vob + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + wdp + image/vnd.ms-photo + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-msmetafile + + + woff + font/woff + + + woff2 + font/woff2 + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + model/x3d+xml + + + x3db + model/x3d+binary + + + x3dbz + model/x3d+binary + + + x3dv + model/x3d+vrml + + + x3dvz + model/x3d+vrml + + + x3dz + model/x3d+xml + + + xaml + application/xaml+xml + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlf + application/x-xliff+xml + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xm + audio/xm + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpl + application/xproc+xml + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + xz + application/x-xz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + Z + application/x-compress + + + z1 + application/x-zmachine + + + z2 + application/x-zmachine + + + z3 + application/x-zmachine + + + z4 + application/x-zmachine + + + z5 + application/x-zmachine + + + z6 + application/x-zmachine + + + z7 + application/x-zmachine + + + z8 + application/x-zmachine + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + + Entire Application + /* + + + CONFIDENTIAL + + + \ No newline at end of file diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/manifests/install.pp b/modules/vulnerabilities/unix/web_training/security_shepherd/manifests/install.pp new file mode 100644 index 000000000..6c0bf4f6a --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/manifests/install.pp @@ -0,0 +1,49 @@ +# Installer process +class security_shepherd::install { + include stdlib + + Exec { path => ['/bin', '/usr/bin', '/usr/local/bin', '/sbin', '/usr/sbin'] } + + ensure_packages(['tomcat9', 'mariadb-server', 'openjdk-11-jdk'], {ensure => installed}) + + service { 'tomcat9': + ensure => running, + name => 'tomcat9', + enable => true, + hasrestart => true, + subscribe => [ + File['/var/lib/tomcat9/webapps/ROOT.war'], + ], + } + + exec { 'remove-default-site': + command => 'rm -rf /var/lib/tomcat9/webapps/*', + } + -> file { '/var/lib/tomcat9/webapps/ROOT.war': + ensure => file, + source => 'puppet:///modules/security_shepherd/ROOT.war', + } + file { '/var/lib/tomcat9/conf/shepherdKeystore.p12': + ensure => file, + source => 'puppet:///modules/security_shepherd/shepherdKeystore.p12', + } + -> file { '/var/lib/tomcat9/conf/server.xml': + ensure => file, + source => 'puppet:///modules/security_shepherd/server.xml', + replace => true, + } + -> file { '/var/lib/tomcat9/conf/web.xml': + ensure => file, + source => 'puppet:///modules/security_shepherd/web.xml', + replace => true, + } + -> file { '/var/lib/tomcat9/conf/database.properties': + ensure => file, + source => 'puppet:///modules/security_shepherd/database.properties', + } + -> file { '/etc/mysql/my.cnf': + ensure => file, + source => 'puppet:///modules/security_shepherd/my.cnf', + replace => true, + } +} diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/manifests/mariadb.pp b/modules/vulnerabilities/unix/web_training/security_shepherd/manifests/mariadb.pp new file mode 100644 index 000000000..1710aff62 --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/manifests/mariadb.pp @@ -0,0 +1,56 @@ +# Mariadb setup +class security_shepherd::mariadb { + $secgen_parameters=secgen_functions::get_parameters($::base64_inputs_file) + $unix_username = $secgen_parameters['unix_username'][0] + $flag_store = $secgen_parameters['flag_store'] + $modules = $secgen_parameters['modules'] + $user = 'root' + $db_pass = 'CowSaysMoo' + + Exec { path => ['/bin', '/usr/bin', '/usr/local/bin', '/sbin', '/usr/sbin'] } + + # Execute this before we lock down root permissions. + file { '/tmp/grant.sql': + ensure => file, + source => 'puppet:///modules/security_shepherd/grant.sql', + } + -> exec { 'grant-root': + cwd => '/tmp', + command => "mysql -u ${user} -p${db_pass} < grant.sql", + } + + file { '/tmp/coreSchema.sql': + ensure => file, + content => template('security_shepherd/coreSchema.sql.erb'), + } + -> file { '/tmp/moduleSchemas.sql': + ensure => file, + source => 'puppet:///modules/security_shepherd/moduleSchemas.sql', + } + + exec { 'create-core': + cwd => '/tmp', + command => "mysql -u ${user} -p${db_pass} < coreSchema.sql", + } + -> exec { 'create-modules': + cwd => '/tmp', + command => "mysql -u ${user} -p${db_pass} < moduleSchemas.sql", + } + + + file { '/var/lib/tomcat9/webapps/ROOT/WEB-INF/classes/flags': + ensure => present, + content => template('security_shepherd/flags.erb'), + replace => true, + } + -> file { '/var/lib/tomcat9/webapps/ROOT/WEB-INF/classes/active-modules': + ensure => present, + content => template('security_shepherd/active-modules.erb'), + replace => true, + notify => Service['tomcat9'] + } + # This needs updating? Weird chicanery happens if not used this way + -> exec { 'restart-tom': + command => 'systemctl restart tomcat9', + } +} diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/secgen_metadata.xml b/modules/vulnerabilities/unix/web_training/security_shepherd/secgen_metadata.xml new file mode 100644 index 000000000..a5501685f --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/secgen_metadata.xml @@ -0,0 +1,45 @@ + + + + Security Shepherd + James Davis + MIT + The OWASP Security Shepherd Project is a web and mobile application security training + platform. Security Shepherd has been designed to foster and improve security awareness among a + varied skill-set demographic. The aim of this project is to take AppSec novices or experienced + engineers and sharpen their penetration testing skill set to security expert status. + + web_training_platform + webapp + none + user_action + unix + + unix_username + modules + flag_store + + + + + + + + + + + + + + https://github.com/OWASP/SecurityShepherd + + security_shepherd + GPLv3 + + + .*mysql.*compatible.* + + + \ No newline at end of file diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/security_shepherd.pp b/modules/vulnerabilities/unix/web_training/security_shepherd/security_shepherd.pp new file mode 100644 index 000000000..7c48b6ae2 --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/security_shepherd.pp @@ -0,0 +1,2 @@ +include security_shepherd::install +include security_shepherd::mariadb diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/templates/active-modules.erb b/modules/vulnerabilities/unix/web_training/security_shepherd/templates/active-modules.erb new file mode 100644 index 000000000..2627c21ae --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/templates/active-modules.erb @@ -0,0 +1,3 @@ +<% @modules.each do |mod| -%> +<%= mod %> +<% end -%> diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/templates/coreSchema.sql.erb b/modules/vulnerabilities/unix/web_training/security_shepherd/templates/coreSchema.sql.erb new file mode 100644 index 000000000..d210775f1 --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/templates/coreSchema.sql.erb @@ -0,0 +1,1902 @@ +DELIMITER ; + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; +SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; + +DROP SCHEMA IF EXISTS `core` ; +CREATE SCHEMA IF NOT EXISTS `core` DEFAULT CHARACTER SET utf8mb4 ; +USE `core` ; + +SELECT "Creating Tables" FROM DUAL; + +-- ----------------------------------------------------- +-- Table `core`.`class` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`class` ( + `classId` VARCHAR(64) NOT NULL , + `className` VARCHAR(32) NOT NULL UNIQUE, + `classYear` VARCHAR(5) NOT NULL , + PRIMARY KEY (`classId`) ) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +-- ----------------------------------------------------- +-- Table `core`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`users` ( + `userId` VARCHAR(64) NOT NULL , + `classId` VARCHAR(64) NULL , + `userName` VARCHAR(32) NOT NULL , + `userPass` VARCHAR(191) NOT NULL , + `userRole` VARCHAR(32) NOT NULL , + `ssoName` VARCHAR(191) , + `badLoginCount` INT NOT NULL DEFAULT 0 , + `suspendedUntil` DATETIME NOT NULL DEFAULT '1000-01-01 00:00:00' , + `userAddress` VARCHAR(128) NULL , + `loginType` VARCHAR(32) NULL , + `tempPassword` TINYINT(1) NULL DEFAULT FALSE , + `tempUsername` TINYINT(1) NULL DEFAULT FALSE , + `userScore` INT NOT NULL DEFAULT 0 , + `goldMedalCount` INT NOT NULL DEFAULT 0 , + `silverMedalCount` INT NOT NULL DEFAULT 0 , + `bronzeMedalCount` INT NOT NULL DEFAULT 0 , + `badSubmissionCount` INT NOT NULL DEFAULT 0, + PRIMARY KEY (`userId`) , + INDEX `classId` (`classId` ASC) , + UNIQUE INDEX `userName_UNIQUE` (`userName` ASC) , + UNIQUE INDEX `ssoName_UNIQUE` (`ssoName` ASC) , + CONSTRAINT `classId` + FOREIGN KEY (`classId` ) + REFERENCES `core`.`class` (`classId` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +-- ----------------------------------------------------- +-- Table `core`.`modules` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`modules` ( + `moduleId` VARCHAR(64) NOT NULL , + `moduleName` VARCHAR(64) NOT NULL , + `moduleNameLangPointer` VARCHAR(64) NOT NULL UNIQUE, + `moduleType` VARCHAR(16) NOT NULL , + `moduleCategory` VARCHAR(64) NULL , + `moduleCategoryLangPointer` VARCHAR(64) NULL , + `moduleResult` VARCHAR(191) NULL , + `moduleHash` VARCHAR(191) NULL UNIQUE, + `moduleStatus` VARCHAR(16) NULL DEFAULT 'open' , + `incrementalRank` INT NULL DEFAULT 200, + `scoreValue` INT NOT NULL DEFAULT 50 , + `hardcodedKey` TINYINT(1) NOT NULL DEFAULT TRUE, + `isUnsafe` TINYINT(1) NOT NULL DEFAULT TRUE, + PRIMARY KEY (`moduleId`) ) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +-- ----------------------------------------------------- +-- Table `core`.`medals` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`medals` ( + `medalId` INT NOT NULL AUTO_INCREMENT, + `classId` VARCHAR(64) NULL, + `moduleId` VARCHAR(64) NOT NULL, + `scoreBonus` INT NOT NULL DEFAULT 5 , + `goldMedalAvailable` TINYINT(1) NOT NULL DEFAULT TRUE, + `silverMedalAvailable` TINYINT(1) NOT NULL DEFAULT TRUE, + `bronzeMedalAvailable` TINYINT(1) NOT NULL DEFAULT TRUE, + PRIMARY KEY (`medalId`) , + INDEX `fk_Medals_Modules1` (`moduleId` ASC) , + CONSTRAINT `fk_Medals_Class1` + FOREIGN KEY (`classId` ) + REFERENCES `core`.`class` (`classId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Medals_Modules1` + FOREIGN KEY (`moduleId` ) + REFERENCES `core`.`modules` (`moduleId` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +-- ----------------------------------------------------- +-- Table `core`.`results` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`results` ( + `userId` VARCHAR(64) NOT NULL , + `moduleId` VARCHAR(64) NOT NULL , + `startTime` DATETIME NOT NULL , + `finishTime` DATETIME NULL , + `csrfCount` INT NULL DEFAULT 0 , + `resultSubmission` LONGTEXT NULL , + `knowledgeBefore` INT NULL , + `knowledgeAfter` INT NULL , + `difficulty` INT NULL , + `scored` INT NULL, + `medalEarned` VARCHAR(32), + PRIMARY KEY (`userId`, `moduleId`) , + INDEX `fk_Results_Modules1` (`moduleId` ASC) , + CONSTRAINT `fk_Results_users1` + FOREIGN KEY (`userId` ) + REFERENCES `core`.`users` (`userId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Results_Modules1` + FOREIGN KEY (`moduleId` ) + REFERENCES `core`.`modules` (`moduleId` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +-- ----------------------------------------------------- +-- Table `core`.`cheatsheet` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`cheatsheet` ( + `cheatSheetId` VARCHAR(64) NOT NULL , + `moduleId` VARCHAR(64) NOT NULL , + `createDate` DATETIME NOT NULL , + `solution` LONGTEXT NOT NULL , + PRIMARY KEY (`cheatSheetId`, `moduleId`) , + INDEX `fk_CheatSheet_Modules1` (`moduleId` ASC) , + CONSTRAINT `fk_CheatSheet_Modules1` + FOREIGN KEY (`moduleId` ) + REFERENCES `core`.`modules` (`moduleId` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +-- ----------------------------------------------------- +-- Table `core`.`sequence` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`sequence` ( + `tableName` VARCHAR(32) NOT NULL , + `currVal` BIGINT(20) NOT NULL DEFAULT 282475249 , + PRIMARY KEY (`tableName`) ) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +-- ----------------------------------------------------- +-- Table `core`.`settings` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `core`.`settings` ( + `setting` VARCHAR(64) NOT NULL , + `value` VARCHAR(64) NOT NULL , + PRIMARY KEY (`setting`) ) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8mb4; + +SELECT "Creating Procedures" FROM DUAL; + +-- ----------------------------------------------------- +-- procedure userLock +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userLock` (theName VARCHAR(32)) +BEGIN +DECLARE theDate DATETIME; +DECLARE untilDate DATETIME; +DECLARE theCount INT; + +COMMIT; +SELECT NOW() FROM DUAL INTO theDate; +-- Get the badLoginCount from users if they are not suspended already or account has attempted a login within the last 10 mins +SELECT badLoginCount FROM `users` + WHERE userName = theName + AND suspendedUntil < (theDate - '0000-00-00 00:10:00') + INTO theCount; + +SELECT suspendedUntil FROM `users` + WHERE userName = theName + AND suspendedUntil < (theDate - '0000-00-00 00:10:00') + INTO untilDate; +IF (untilDate < theDate) THEN + IF (theCount >= 3) THEN + -- Set suspended until 30 mins from now + UPDATE `users` SET + suspendedUntil = TIMESTAMPADD(MINUTE, 30, theDate), + badLoginCount = 0 + WHERE userName = theName; + COMMIT; + -- ELSE the user is already suspended, or theCount < 3 + ELSE + -- Get user where their last bad login was within 10 mins ago + SELECT COUNT(userId) FROM users + WHERE userName = theName + AND suspendedUntil < (theDate - '0000-00-00 00:10:00') + INTO theCount; + + -- IF a user was counted then they are not suspended, but have attemped a bad login within 10 mins of their last + IF (theCount > 0) THEN + UPDATE `users` SET + badLoginCount = (badLoginCount + 1), + suspendedUntil = theDate + WHERE userName = theName; + COMMIT; + -- ELSE this is the first time within 10 mins that this account has logged in bad + ELSE + UPDATE `users` SET + badLoginCount = 1, + suspendedUntil = theDate + WHERE userName = theName; + COMMIT; + END IF; + END IF; +END IF; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure suspendUser +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`suspendUser` (theId VARCHAR(64), theMins INT) +BEGIN +DECLARE theDate DATETIME; +COMMIT; +SELECT NOW() FROM DUAL INTO theDate; +UPDATE `users` SET + suspendedUntil = TIMESTAMPADD(MINUTE, theMins, theDate) + WHERE userId = theId; +COMMIT; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure unSuspendUser +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`unSuspendUser` (theId VARCHAR(64)) +BEGIN +DECLARE theDate DATETIME; +COMMIT; +SELECT NOW() FROM DUAL INTO theDate; +UPDATE `users` SET + suspendedUntil = theDate + WHERE userId = theId; +COMMIT; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure userFind +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userFind` (IN theName VARCHAR(32)) +BEGIN +COMMIT; +SELECT userName, suspendedUntil FROM `users` + WHERE userName = theName; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure playerCount +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`playerCount` () +BEGIN + COMMIT; + SELECT count(userId) FROM users + WHERE userRole = 'player'; +END + + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userCreate +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userCreate` (IN theClassId VARCHAR(64), IN theUserName VARCHAR(32), IN theUserPass VARCHAR(191), IN theUserRole VARCHAR(32), IN theSSOName VARCHAR(32), IN theUserAddress VARCHAR(128), IN theLoginType VARCHAR(32), theTempPassword BOOLEAN, theTempUsername BOOLEAN) +BEGIN + DECLARE theId VARCHAR(64); + DECLARE theClassCount INT; + DECLARE theDate DATETIME; + + COMMIT; + SELECT NOW() FROM DUAL INTO theDate; + -- If (Valid User Type) AND (classId = null or (Valid Class Id)) Then create user + IF (theUserRole = 'player' OR theUserRole = 'admin') THEN + IF (theClassId != null) THEN + SELECT count(classId) FROM class + WHERE classId = theClassId + INTO theClassCount; + IF (theClassCount != 1) THEN + SELECT null FROM DUAL INTO theClassId; + END IF; + END IF; + + -- Increment sequence for users table + UPDATE sequence SET + currVal = currVal + 1 + WHERE tableName = 'users'; + COMMIT; + SELECT SHA(CONCAT(currVal, tableName, theDate)) FROM sequence + WHERE tableName = 'users' + INTO theId; + + -- Insert the values, badLoginCount and suspendedUntil Values will use the defaults defined by the table + INSERT INTO users ( + userId, + classId, + userName, + userPass, + userRole, + ssoName, + userAddress, + loginType, + tempPassword, + tempUsername + ) VALUES ( + theId, + theClassId, + theUserName, + theUserPass, + theUserRole, + theSSOName, + theUserAddress, + theLoginType, + theTempPassword, + theTempUsername + ); + COMMIT; + SELECT null FROM DUAL; + ELSE + SELECT 'Invalid Role Type Detected' FROM DUAL; + END IF; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userBadLoginReset +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userBadLoginReset` (IN theUserId VARCHAR(45)) +BEGIN + COMMIT; + UPDATE users SET + badLoginCount = 0 + WHERE userId = theUserId; + COMMIT; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userPasswordChange +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userPasswordChange` (IN theUserName VARCHAR(32), IN newHash VARCHAR(191)) +BEGIN +DECLARE theDate DATETIME; +COMMIT; +SELECT NOW() FROM DUAL INTO theDate; +UPDATE users SET + userPass = newHash, + tempPassword = FALSE + WHERE userName = theUserName + AND suspendedUntil < theDate; +COMMIT; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userPasswordChangeAdmin +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userPasswordChangeAdmin` (IN theUserId VARCHAR(64), IN newHash VARCHAR(191)) +BEGIN +DECLARE theDate DATETIME; +COMMIT; +SELECT NOW() FROM DUAL INTO theDate; +UPDATE users SET + userPass = newHash, + tempPassword = TRUE + WHERE userId = theUserId; +COMMIT; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure classCreate +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`classCreate` (IN theClassName VARCHAR(32), IN theClassYear VARCHAR(5)) +BEGIN + DECLARE theId VARCHAR(64); + COMMIT; + UPDATE sequence SET + currVal = currVal + 1 + WHERE tableName = 'users'; + COMMIT; + SELECT SHA(CONCAT(currVal, tableName)) FROM sequence + WHERE tableName = 'users' + INTO theId; + INSERT INTO class VALUES (theId, theClassName, theClassYear); +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure classCount +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`classCount` () +BEGIN + SELECT count(ClassId) FROM class; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure classesGetData +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`classesGetData` () +BEGIN + SELECT classId, className, classYear FROM class; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure classFind +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`classFind` (IN theClassId VARCHAR(64)) +BEGIN + SELECT className, classYear FROM class + WHERE classId = theClassId; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure playersByClass +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`playersByClass` (IN theClassId VARCHAR(64)) +BEGIN + COMMIT; + SELECT userId, userName, userAddress FROM users + WHERE classId = theClassId + AND userRole = 'player' + ORDER BY userName; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure playerUpdateClass +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`playerUpdateClass` (IN theUserId VARCHAR(64), IN theClassId VARCHAR(64)) +BEGIN +COMMIT; +UPDATE users SET + classId = theClassId + WHERE userId = theUserId + AND userRole = 'player'; +COMMIT; +SELECT userName FROM users + WHERE userId = theUserId + AND classId = theClassId + AND userRole = 'player'; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure playerFindById +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`playerFindById` (IN playerId VARCHAR(64)) +BEGIN +COMMIT; +SELECT userName FROM users + WHERE userId = playerId + AND userRole = 'player'; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure playersWithoutClass +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`playersWithoutClass` () +BEGIN + COMMIT; + SELECT userId, userName, userAddress FROM users + WHERE classId is NULL + AND userRole = 'player' + ORDER BY userName; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure playerUpdateClassToNull +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`playerUpdateClassToNull` (IN theUserId VARCHAR(45)) +BEGIN +COMMIT; +UPDATE users SET + classId = NULL + WHERE userId = theUserId + AND userRole = 'player'; +COMMIT; +SELECT userName FROM users + WHERE userId = theUserId + AND classId IS NULL + AND userRole = 'player'; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userUpdateRole +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userUpdateRole` (IN theUserId VARCHAR(64), IN theNewRole VARCHAR(32)) +BEGIN +COMMIT; +UPDATE users SET + userRole = theNewRole + WHERE userId = theUserId; +COMMIT; +SELECT userName FROM users + WHERE userId = theUserId; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure adminFindById +-- ----------------------------------------------------- +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`adminFindById` (IN adminId VARCHAR(64)) +BEGIN +COMMIT; +SELECT userName FROM users + WHERE userId = adminId + AND userRole = 'admin'; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure adminGetAll +-- ----------------------------------------------------- +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`adminGetAll` () +BEGIN +COMMIT; +SELECT userId, userName, userAddress FROM users + WHERE userRole = 'admin' + ORDER BY userName; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleCreate +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleCreate` (IN theModuleName VARCHAR(64), theModuleType VARCHAR(16), theModuleCategory VARCHAR(64), isHardcodedKey BOOLEAN, theModuleSolution VARCHAR(191)) +BEGIN +DECLARE theId VARCHAR(64); +DECLARE theDate DATETIME; +DECLARE theLangPointer VARCHAR(64); +DECLARE theCategoryLangPointer VARCHAR(64); +COMMIT; +SELECT NOW() FROM DUAL + INTO theDate; +SELECT REPLACE(LOWER(theModuleName), ' ', '.') FROM DUAL + INTO theLangPointer; +SELECT REPLACE(LOWER(theModuleCategory), ' ', '.') FROM DUAL + INTO theCategoryLangPointer; +IF (theModuleSolution IS NULL) THEN + SELECT SHA2(theDate, 256) FROM DUAL + INTO theModuleSolution; +END IF; +IF (isHardcodedKey IS NULL) THEN + SELECT TRUE FROM DUAL + INTO isHardcodedKey; +END IF; +IF (theModuleType = 'lesson' OR theModuleType = 'challenge') THEN + -- Increment sequence for users table + UPDATE sequence SET + currVal = currVal + 1 + WHERE tableName = 'modules'; + COMMIT; + SELECT SHA(CONCAT(currVal, tableName, theDate, theModuleName)) FROM sequence + WHERE tableName = 'modules' + INTO theId; + INSERT INTO modules ( + moduleId, moduleName, moduleNameLangPointer, moduleType, moduleCategory, moduleCategoryLangPointer, moduleResult, moduleHash, hardcodedKey + )VALUES( + theId, theModuleName, theLangPointer, theModuleType, theModuleCategory, theCategoryLangPointer ,theModuleSolution, SHA2(CONCAT(theModuleName, theId), 256), isHardcodedKey + ); + COMMIT; + SELECT moduleId, moduleHash, moduleNameLangPointer, moduleCategoryLangPointer FROM modules + WHERE moduleId = theId; +ELSE + SELECT 'ERROR: Invalid module type submited' FROM DUAL; +END IF; + +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure getMyModules +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`getMyModules` (IN theUserId VARCHAR(64)) +BEGIN +(SELECT moduleNameLangPointer, moduleCategoryLangPointer, moduleId, finishTime, moduleType, scoreValue, incrementalRank, scored, medalEarned +FROM modules LEFT JOIN results USING (moduleId) WHERE userId = theUserId AND moduleStatus = 'open') UNION (SELECT moduleNameLangPointer, moduleCategoryLangPointer, moduleId, null, moduleType, scoreValue, incrementalRank, null, null FROM modules WHERE moduleId NOT IN (SELECT moduleId FROM modules JOIN results USING (moduleId) WHERE userId = theUserId AND moduleStatus = 'open') AND moduleStatus = 'open') ORDER BY incrementalRank; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleAllInfo +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleAllInfo` (IN theType VARCHAR(64), IN theUserId VARCHAR(64)) +BEGIN +(SELECT moduleNameLangPointer, moduleCategoryLangPointer, moduleId, finishTime +FROM modules LEFT JOIN results USING (moduleId) WHERE userId = theUserId AND moduleType = theType AND moduleStatus = 'open') UNION (SELECT moduleNameLangPointer, moduleCategoryLangPointer, moduleId, null FROM modules WHERE moduleId NOT IN (SELECT moduleId FROM modules JOIN results USING (moduleId) WHERE userId = theUserId AND moduleType = theType AND moduleStatus = 'open') AND moduleType = theType AND moduleStatus = 'open') ORDER BY moduleCategoryLangPointer, moduleNameLangPointer; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure lessonInfo +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`lessonInfo` (IN theUserId VARCHAR(64)) +BEGIN +(SELECT moduleNameLangPointer, moduleCategory, moduleId, finishTime +FROM modules LEFT JOIN results USING (moduleId) WHERE userId = theUserId AND moduleType = 'lesson' AND moduleStatus = 'open') UNION (SELECT moduleNameLangPointer, moduleCategory, moduleId, null FROM modules WHERE moduleId NOT IN (SELECT moduleId FROM modules JOIN results USING (moduleId) WHERE userId = theUserId AND moduleType = 'lesson' AND moduleStatus = 'open') AND moduleType = 'lesson' AND moduleStatus = 'open') ORDER BY moduleNameLangPointer, moduleCategory, moduleNameLangPointer; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleGetResult +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleGetResult` (IN theModuleId VARCHAR(64)) +BEGIN +COMMIT; +SELECT moduleName, moduleResult FROM modules + WHERE moduleId = theModuleId + AND moduleResult IS NOT NULL; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleGetNameLocale +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleGetNameLocale` (IN theModuleId VARCHAR(64)) +BEGIN +COMMIT; +SELECT moduleNameLangPointer, moduleName FROM modules + WHERE moduleId = theModuleId; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userUpdateResult +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userUpdateResult` (IN theModuleId VARCHAR(64), IN theUserId VARCHAR(64), IN theBefore INT, IN theAfter INT, IN theDifficulty INT, IN givePoints BOOLEAN, IN theAdditionalInfo LONGTEXT) +BEGIN +DECLARE theDate TIMESTAMP; +DECLARE theClassId VARCHAR(64); +DECLARE theMedalEarned VARCHAR(32); +DECLARE theBonus INT; +DECLARE totalScore INT; +DECLARE medalInfo INT; -- Used to find out if there is a medal available +DECLARE goldMedalInfo INT; +DECLARE silverMedalInfo INT; +DECLARE bronzeMedalInfo INT; +DECLARE medalRow INT; +COMMIT; + +SELECT NOW() FROM DUAL + INTO theDate; + +IF (givePoints) THEN + -- Does this Module/class combo exist in the DB? + SELECT classId FROM users WHERE userid = theUserId INTO theClassId; + IF (theClassId IS NULL) THEN + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND classId IS NULL INTO medalRow; + ELSE + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND classId = theClassId INTO medalRow; + END IF; + IF (medalRow < 1) THEN + INSERT INTO medals (classId, moduleId) VALUES (theClassId, theModuleId); + END IF; + COMMIT; + + -- Get current bonus and decrement the bonus value + SELECT 0 FROM DUAL INTO totalScore; + + IF (theClassId IS NULL) THEN + SELECT scoreBonus FROM medals WHERE moduleId = theModuleId AND classId IS NULL INTO theBonus; + ELSE + SELECT scoreBonus FROM medals WHERE moduleId = theModuleId AND classId = theClassId INTO theBonus; + END IF; + IF (theBonus > 0) THEN + SELECT (totalScore + theBonus) FROM DUAL + INTO totalScore; + IF (theClassId IS NULL) THEN + UPDATE medals SET scoreBonus = scoreBonus - 1 WHERE moduleId = theModuleId AND classId IS NULL; + ELSE + UPDATE medals SET scoreBonus = scoreBonus - 1 WHERE moduleId = theModuleId AND classId = theClassId; + END IF; + COMMIT; + END IF; + + -- Medal Available? + IF (theClassId IS NULL) THEN + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND (goldMedalAvailable = TRUE OR silverMedalAvailable = TRUE OR bronzeMedalAvailable = TRUE) AND classId IS NULL INTO medalInfo; + ELSE + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND classId = theClassId AND (goldMedalAvailable = TRUE OR silverMedalAvailable = TRUE OR bronzeMedalAvailable = TRUE) INTO medalInfo; + END IF; + COMMIT; + + IF (medalInfo > 0) THEN + IF (theClassId IS NULL) THEN + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND goldMedalAvailable = TRUE AND classId IS NULL INTO goldMedalInfo; + ELSE + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND classId = theClassId AND goldMedalAvailable = TRUE INTO goldMedalInfo; + END IF; + IF (goldMedalInfo > 0) THEN + UPDATE users SET goldMedalCount = goldMedalCount + 1 WHERE userId = theUserId; + IF (theClassId IS NULL) THEN + UPDATE medals SET goldMedalAvailable = FALSE WHERE moduleId = theModuleId AND classId IS NULL; + ELSE + UPDATE medals SET goldMedalAvailable = FALSE WHERE moduleId = theModuleId AND classId = theClassId; + END IF; + COMMIT; + ELSE + IF (theClassId IS NULL) THEN + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND silverMedalAvailable = TRUE AND classId IS NULL INTO silverMedalInfo; + ELSE + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND classId = theClassId AND silverMedalAvailable = TRUE INTO silverMedalInfo; + END IF; + IF (silverMedalInfo > 0) THEN + UPDATE users SET silverMedalCount = silverMedalCount + 1 WHERE userId = theUserId; + IF (theClassId IS NULL) THEN + UPDATE medals SET silverMedalAvailable = FALSE WHERE moduleId = theModuleId AND classId IS NULL; + ELSE + UPDATE medals SET silverMedalAvailable = FALSE WHERE moduleId = theModuleId AND classId = theClassId; + END IF; + COMMIT; + ELSE + IF (theClassId IS NULL) THEN + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND bronzeMedalAvailable = TRUE AND classId IS NULL INTO bronzeMedalInfo; + ELSE + SELECT count(moduleId) FROM medals WHERE moduleId = theModuleId AND classId = theClassId AND bronzeMedalAvailable = TRUE INTO bronzeMedalInfo; + END IF; + IF (bronzeMedalInfo > 0) THEN + UPDATE users SET bronzeMedalCount = bronzeMedalCount + 1 WHERE userId = theUserId; + IF (theClassId IS NULL) THEN + UPDATE medals SET bronzeMedalAvailable = FALSE WHERE moduleId = theModuleId AND classId IS NULL; + ELSE + UPDATE medals SET bronzeMedalAvailable = FALSE WHERE moduleId = theModuleId AND classId = theClassId; + END IF; + COMMIT; + END IF; + END IF; + END IF; + END IF; + + -- Get the type of Medal the user might have earned + IF (medalInfo <= 0) THEN + SELECT "none" FROM DUAL INTO theMedalEarned; + ELSE + IF (goldMedalInfo > 0) THEN + SELECT "gold" FROM DUAL INTO theMedalEarned; + ELSE + IF (silverMedalInfo > 0) THEN + SELECT "silver" FROM DUAL INTO theMedalEarned; + ELSE + IF (bronzeMedalInfo > 0) THEN + SELECT "bronze" FROM DUAL INTO theMedalEarned; + END IF; + END IF; + END IF; + END IF; + + -- Get the Score value for the level + SELECT (totalScore + scoreValue) FROM modules + WHERE moduleId = theModuleId + INTO totalScore; + + -- Update users score + UPDATE users SET + userScore = userScore + totalScore + WHERE userId = theUserId; + COMMIT; + +ELSE + -- Don't award points or medals, just record module as completed + SET totalScore=0; + SELECT "none" FROM DUAL INTO theMedalEarned; + +END IF; + +-- Update result row +UPDATE results SET + finishTime = theDate, + `knowledgeBefore` = theBefore, + `knowledgeAfter` = theAfter, + `difficulty` = theDifficulty, + `resultSubmission` = theAdditionalInfo, + `scored` = totalScore, + `medalEarned` = theMedalEarned + WHERE startTime IS NOT NULL + AND finishTime IS NULL + AND userId = theUserId + AND moduleId = theModuleId; +COMMIT; +SELECT moduleName FROM modules + JOIN results USING (moduleId) + WHERE startTime IS NOT NULL + AND finishTime IS NOT NULL + AND userId = theUserId + AND moduleId = theModuleId; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleGetHash +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleGetHash` (IN theModuleId VARCHAR(64), IN theUserId VARCHAR(64)) +BEGIN +DECLARE theDate DATETIME; +DECLARE tempInt INT; +COMMIT; +SELECT NOW() FROM DUAL + INTO theDate; +SELECT COUNT(*) FROM results + WHERE userId = theUserId + AND moduleId = theModuleId + AND startTime IS NOT NULL + INTO tempInt; +IF(tempInt = 0) THEN + INSERT INTO results + (moduleId, userId, startTime) + VALUES + (theModuleId, theUserId, theDate); + COMMIT; +END IF; +SELECT moduleHash, moduleCategory, moduleType FROM modules + WHERE moduleId = theModuleId AND moduleStatus = 'open'; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleGetResultFromHash +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleGetResultFromHash` (IN theHash VARCHAR(191)) +BEGIN +COMMIT; +SELECT moduleResult FROM modules + WHERE moduleHash = theHash; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure resultMessageByClass +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`resultMessageByClass` (IN theClassId VARCHAR(64), IN theModuleId VARCHAR(64)) +BEGIN +COMMIT; +SELECT userName, resultSubmission FROM results + JOIN users USING (userId) + JOIN class USING (classId) + WHERE classId = theClassId + AND moduleId = theModuleId; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure resultMessageSet +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`resultMessageSet` (IN theMessage VARCHAR(128), IN theUserId VARCHAR(64), IN theModuleId VARCHAR(64)) +BEGIN +COMMIT; +UPDATE results SET + resultSubmission = theMessage + WHERE moduleId = theModuleId + AND userId = theUserId; +COMMIT; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure resultMessagePlus +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`resultMessagePlus` (IN theModuleId VARCHAR(64), IN theUserId2 VARCHAR(64)) +BEGIN +UPDATE results SET + csrfCount = csrfCount + 1 + WHERE userId = theUserId2 + AND moduleId = theModuleId; +COMMIT; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure resultMessagePlus +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`csrfLevelComplete` (IN theModuleId VARCHAR(64), IN theUserId2 VARCHAR(64)) +BEGIN + DECLARE temp INT; +COMMIT; +SELECT csrfCount FROM results + WHERE userId = theUserId2 + AND moduleId = theModuleId; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleGetIdFromHash +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleGetIdFromHash` (IN theHash VARCHAR(191)) +BEGIN +COMMIT; +SELECT moduleId FROM modules + WHERE moduleHash = theHash; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userGetNameById +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userGetNameById` (IN theUserId VARCHAR(64)) +BEGIN +COMMIT; +SELECT userName FROM users + WHERE userId = theUserId; +END +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure userGetIdByName +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userGetIdByName` (IN theUserName VARCHAR(64)) +BEGIN +COMMIT; +SELECT userId FROM users + WHERE userName = theUserName; +END +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure userClassId +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userClassId` (IN theUserName VARCHAR(64)) +BEGIN +COMMIT; +SELECT classId FROM users + WHERE userName = theUserName; +END +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure userBadSubmission +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userBadSubmission` (IN theUserId VARCHAR(64)) +BEGIN +UPDATE users SET + badSubmissionCount = badSubmissionCount + 1 + WHERE userId = theUserId; +COMMIT; +UPDATE users SET + userScore = userScore - userScore/10 + WHERE userId = theUserId AND badSubmissionCount > 40 AND userScore > 5; +COMMIT; +UPDATE users SET + userScore = userScore - 10 + WHERE userId = theUserId AND badSubmissionCount > 40 AND userScore <= 5; +COMMIT; +END +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure resetUserBadSubmission +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`resetUserBadSubmission` (IN theUserId VARCHAR(64)) +BEGIN +UPDATE users SET + badSubmissionCount = 0 + WHERE userId = theUserId; +COMMIT; +END +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleComplete +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleComplete` (IN theModuleId VARCHAR(64), IN theUserId VARCHAR(64)) +BEGIN +DECLARE theDate DATETIME; +COMMIT; +SELECT NOW() FROM DUAL + INTO theDate; +UPDATE results SET + finishTime = theDate + WHERE startTime IS NOT NULL + AND moduleId = theModuleId + AND userId = theUserId; +COMMIT; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure cheatSheetCreate +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`cheatSheetCreate` (IN theModule VARCHAR(64), IN theSheet LONGTEXT) +BEGIN +DECLARE theDate DATETIME; +DECLARE theId VARCHAR(64); + COMMIT; + UPDATE sequence SET + currVal = currVal + 1 + WHERE tableName = 'cheatSheet'; + COMMIT; + SELECT NOW() FROM DUAL INTO theDate; + + SELECT SHA(CONCAT(currVal, tableName, theDate)) FROM `core`.`sequence` + WHERE tableName = 'cheatSheet' + INTO theId; + + INSERT INTO `core`.`cheatsheet` + (cheatSheetId, moduleId, createDate, solution) + VALUES + (theId, theModule, theDate, theSheet); + COMMIT; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleGetAll +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleGetAll` () +BEGIN +COMMIT; +SELECT moduleId, moduleName, moduleType, moduleCategory FROM modules + ORDER BY moduleType, moduleCategory, moduleName; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure cheatSheetGetSolution +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`cheatSheetGetSolution` (IN theModuleId VARCHAR(64)) +BEGIN +COMMIT; +SELECT moduleName, solution FROM modules + JOIN cheatsheet USING (moduleId) + WHERE moduleId = theModuleID + ORDER BY createDate DESC; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleGetHashById +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleGetHashById` (IN theModuleId VARCHAR(64)) +BEGIN +COMMIT; +SELECT moduleHash FROM modules + WHERE moduleId = theModuleId; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userCheckResult +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userCheckResult` (IN theModuleId VARCHAR(64), IN theUserId VARCHAR(64)) +BEGIN +COMMIT; +-- Returns a module Name if the user has not completed the module identified by moduleId +SELECT moduleName FROM results + JOIN modules USING(moduleId) + WHERE finishTime IS NULL + AND startTime IS NOT NULL + AND finishTime IS NULL + AND userId = theUserId + AND moduleId = theModuleId; +END + + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleIncrementalInfo +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleIncrementalInfo` (IN theUserId VARCHAR(64)) +BEGIN +(SELECT moduleNameLangPointer, moduleCategory, moduleId, finishTime, incrementalRank FROM modules LEFT JOIN results USING (moduleId) WHERE userId = theUserId AND moduleStatus = 'open') UNION (SELECT moduleNameLangPointer, moduleCategory, moduleId, null, incrementalRank FROM modules WHERE moduleStatus = 'open' AND moduleId NOT IN (SELECT moduleId FROM modules JOIN results USING (moduleId) WHERE userId = theUserId)) ORDER BY incrementalRank; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleFeedback +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleFeedback` (IN theModuleId VARCHAR(64)) +BEGIN +SELECT userName, TIMESTAMPDIFF(MINUTE, finishTime, startTime)*(-1), difficulty, knowledgeBefore, knowledgeAfter, resultSubmission + FROM modules + LEFT JOIN results USING (moduleId) + LEFT JOIN users USING (userId) + WHERE moduleId = theModuleId; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userProgress +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userProgress` (IN theClassId VARCHAR(64)) +BEGIN + COMMIT; +SELECT userName, count(finishTime), userScore FROM users JOIN results USING (userId) WHERE finishTime IS NOT NULL +AND classId = theClassId +GROUP BY userName UNION SELECT userName, 0, userScore FROM users WHERE classId = theClassId AND userId NOT IN (SELECT userId FROM users JOIN results USING (userId) WHERE classId = theClassId AND finishTime IS NOT NULL GROUP BY userName) ORDER BY userScore DESC; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure classScoreboard +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`classScoreboard` (IN theClassId VARCHAR(64)) +BEGIN + COMMIT; +SELECT userId, userName, userScore, goldMedalCount, silverMedalCount, bronzeMedalCount FROM users + WHERE classId = theClassId AND userRole = 'player' AND userScore > 0 + ORDER BY userScore DESC, goldMedalCount DESC, silverMedalCount DESC, bronzeMedalCount DESC, userId ASC; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure totalScoreboard +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`totalScoreboard` () +BEGIN + COMMIT; +SELECT userId, userName, userScore, goldMedalCount, silverMedalCount, bronzeMedalCount FROM users + WHERE userRole = 'player' AND userScore > 0 + ORDER BY userScore DESC, goldMedalCount DESC, silverMedalCount DESC, bronzeMedalCount DESC, userId ASC; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure userStats +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userStats` (IN theUserName VARCHAR(32)) +BEGIN +DECLARE temp INT; +SELECT COUNT(*) FROM modules INTO temp; +SELECT userName, sum(TIMESTAMPDIFF(MINUTE, finishTime, startTime)*(-1)) AS "Time", CONCAT(COUNT(*),"/", temp) AS "Progress" + FROM modules + LEFT JOIN results USING (moduleId) + LEFT JOIN users USING (userId) + WHERE userName = theUserName AND resultSubmission IS NOT NULL + GROUP BY userName; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure userStatsDetailed +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`userStatsDetailed` (IN theUserName VARCHAR(32)) +BEGIN +DECLARE temp INT; +SELECT COUNT(*) FROM modules INTO temp; +SELECT userName, moduleName, TIMESTAMPDIFF(MINUTE, finishTime, startTime)*(-1) AS "Time" + FROM modules + LEFT JOIN results USING (moduleId) + LEFT JOIN users USING (userId) + WHERE userName = theUserName AND resultSubmission IS NOT NULL + ORDER BY incrementalRank; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleOpenInfo +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleOpenInfo` (IN theUserId VARCHAR(64)) +BEGIN +(SELECT moduleName, moduleCategory, moduleId, finishTime FROM modules LEFT JOIN results USING (moduleId) +WHERE userId = theUserId AND moduleStatus = 'open') UNION (SELECT moduleName, moduleCategory, moduleId, null FROM modules WHERE moduleId NOT IN (SELECT moduleId FROM modules JOIN results USING (moduleId) WHERE userId = theUserId AND moduleStatus = 'open') AND moduleStatus = 'open') ORDER BY moduleCategory, moduleName; +END + +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleClosednfo +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleClosednfo` (IN theUserId VARCHAR(64)) +BEGIN +(SELECT moduleName, moduleCategory, moduleId, finishTime +FROM modules LEFT JOIN results USING (moduleId) WHERE userId = theUserId AND moduleStatus = 'closed') UNION (SELECT moduleName, moduleCategory, moduleId, null FROM modules WHERE moduleId NOT IN (SELECT moduleId FROM modules JOIN results USING (moduleId) WHERE userId = theUserId AND moduleStatus = 'closed') AND moduleStatus = 'closed') ORDER BY moduleCategory, moduleName; +END +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleTournamentOpenInfo +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleTournamentOpenInfo` (IN theUserId VARCHAR(64)) +BEGIN +(SELECT moduleNameLangPointer, moduleCategory, moduleId, finishTime, incrementalRank, scoreValue FROM modules LEFT JOIN results USING (moduleId) +WHERE userId = theUserId AND moduleStatus = 'open') UNION (SELECT moduleNameLangPointer, moduleCategory, moduleId, null, incrementalRank, scoreValue FROM modules WHERE moduleId NOT IN (SELECT moduleId FROM modules JOIN results USING (moduleId) WHERE userId = theUserId AND moduleStatus = 'open') AND moduleStatus = 'open') ORDER BY incrementalRank, scoreValue, moduleNameLangPointer; +END + +$$ +DELIMITER ; +; + +-- ----------------------------------------------------- +-- procedure moduleSetStatus +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleSetStatus` (IN theModuleId VARCHAR(64), IN theStatus VARCHAR(16)) +BEGIN +UPDATE modules SET + moduleStatus = theStatus + WHERE moduleId = theModuleId; +COMMIT; +END +$$ +DELIMITER ; +; +-- ----------------------------------------------------- +-- procedure moduleAllStatus +-- ----------------------------------------------------- + +USE `core`; +DELIMITER $$ +CREATE PROCEDURE `core`.`moduleAllStatus` () +BEGIN +SELECT moduleId, moduleName, moduleStatus + FROM modules; +END +$$ +DELIMITER ; +; + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + +-- ----------------------------------------------------- +SELECT "Data for table `core`.`sequence`" FROM DUAL; +-- ----------------------------------------------------- +SET AUTOCOMMIT=0; +USE `core`; +INSERT INTO `core`.`sequence` (`tableName`, `currVal`) VALUES ('users', '282475249'); +INSERT INTO `core`.`sequence` (`tableName`, `currVal`) VALUES ('cheatSheet', '282475299'); +INSERT INTO `core`.`sequence` (`tableName`, `currVal`) VALUES ('class', '282475249'); +INSERT INTO `core`.`sequence` (`tableName`, `currVal`) VALUES ('modules', '282475576'); + +COMMIT; + +-- ----------------------------------------------------- +SELECT "Data for table `core`.`settings`" FROM DUAL; +-- ----------------------------------------------------- +SET AUTOCOMMIT=0; +USE `core`; +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('adminCheatsEnabled', false); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('playerCheatsEnabled', false); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('moduleLayout', 'ctf'); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('enableFeedback', false); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('openRegistration', false); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('scoreboardStatus', 'open'); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('scoreboardClass', ''); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('hasStartTime', false); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('startTime', '2019-01-01T12:00:00'); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('hasLockTime', false); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('lockTime', '2020-01-01T12:00:00'); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('hasEndTime', false); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('endTime', '2020-02-01T12:00:00'); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('enableTranslations', true); +INSERT INTO `core`.`settings` (`setting`, `value`) VALUES ('defaultClass', ''); + +COMMIT; + +-- ----------------------------------------------------- +SELECT "Inserting Data for table `core`.`modules`" FROM DUAL; +-- ----------------------------------------------------- +SET AUTOCOMMIT=0; +USE `core`; + +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('0dbea4cb5811fff0527184f99bd5034ca9286f11', 'Insecure Direct Object References', 'insecure.direct.object.references', 'lesson', 'Insecure Direct Object References', 'insecure.direct.object.references', '59e571b1e59441e76e0c85e5b49', 'fdb94122d0f032821019c7edf09dc62ea21e25ca619ed9107bcc50e4a8dbc100', 'open', '5', '10', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('b9d82aa7b46ddaddb6acfe470452a8362136a31e', 'Poor Data Validation', 'poor.data.validation', 'lesson', 'Poor Data Validation', 'poor.data.validation', '6680b08b175c9f3d521764b41349fcbd3c0ad0a76655a10d42372ebccdfdb4bb', '4d8d50a458ca5f1f7e2506dd5557ae1f7da21282795d0ed86c55fefe41eb874f', 'open', '6', '10', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('bf847c4a8153d487d6ec36f4fca9b77749597c64', 'Security Misconfiguration', 'security.misconfiguration', 'lesson', 'Security Misconfigurations', 'security.misconfigurations', '55b34717d014a5a355f6eced4386878fab0b2793e1d1dbfd23e6262cd510ea96', 'fe04648f43cdf2d523ecf1675f1ade2cde04a7a2e9a7f1a80dbb6dc9f717c833', 'open', '7', '10', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('9533e21e285621a676bec58fc089065dec1f59f5', 'Broken Session Management', 'broken.session.management', 'lesson', 'Session Management', 'session.management', '6594dec9ff7c4e60d9f8945ca0d4', 'b8c19efd1a7cc64301f239f9b9a7a32410a0808138bbefc98986030f9ea83806', 'open', '16', '10', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('52c5394cdedfb2e95b3ad8b92d0d6c9d1370ea9a', 'Failure to Restrict URL Access', 'failure.to.restrict.url.access', 'lesson', 'Failure to Restrict URL Access', 'failure.to.restrict.url.access', 'f60d1337ac4d35cb67880a3adda79', 'oed23498d53ad1d965a589e257d8366d74eb52ef955e103c813b592dba0477e3', 'open', '25', '15', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('ca8233e0398ecfa76f9e05a49d49f4a7ba390d07', 'Cross Site Scripting', 'cross.site.scripting', 'lesson', 'XSS', 'xss', 'ea7b563b2935d8587539d747d', 'zf8ed52591579339e590e0726c7b24009f3ac54cdff1b81a65db1688d86efb3a', 'open', '26', '15', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('cd7f70faed73d2457219b951e714ebe5775515d8', 'Cross Site Scripting 1', 'cross.site.scripting.1', 'challenge', 'XSS', 'xss', '445d0db4a8fc5d4acb164d022b', 'd72ca2694422af2e6b3c5d90e4c11e7b4575a7bc12ee6d0a384ac2469449e8fa', 'open', '35', '20', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('53a53a66cb3bf3e4c665c442425ca90e29536edd', 'Insecure Data Storage', 'insecure.data.storage', 'lesson', 'Mobile Insecure Data Storage', 'mobile.insecure.data.storage', 'Battery777', 'ecfad0a5d41f59e6bed7325f56576e1dc140393185afca8975fbd6822ebf392f', 'open', '45', '25', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('201ae6f8c55ba3f3b5881806387fbf34b15c30c2', 'Insecure Cryptographic Storage', 'insecure.cryptographic.storage', 'lesson', 'Insecure Cryptographic Storage', 'insecure.cryptographic.storage', 'base64isNotEncryptionBase64isEncodingBase64HidesNothingFromYou', 'if38ebb58ea2d245fa792709370c00ca655fded295c90ef36f3a6c5146c29ef2', 'open', '46', '25', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('408610f220b4f71f7261207a17055acbffb8a747', 'SQL Injection', 'sql.injection', 'lesson', 'Injection', 'injection', '3c17f6bf34080979e0cebda5672e989c07ceec9fa4ee7b7c17c9e3ce26bc63e0', 'e881086d4d8eb2604d8093d93ae60986af8119c4f643894775433dbfb6faa594', 'open', '55', '30', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('891a0208a95f1791287be721a4b851d4c584880a', 'Insecure Cryptographic Storage Challenge 1', 'insecure.cryptographic.storage.challenge.1', 'challenge', 'Insecure Cryptographic Storage', 'insecure.cryptographic.storage', 'mylovelyhorserunningthroughthefieldwhereareyougoingwithyourbiga', 'x9c408d23e75ec92495e0caf9a544edb2ee8f624249f3e920663edb733f15cd7', 'open', '65', '35', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('2dc909fd89c2b03059b1512e7b54ce5d1aaa4bb4', 'Insecure Direct Object Reference Challenge 1', 'insecure.direct.object.reference.challenge.1', 'challenge', 'Insecure Direct Object References', 'insecure.direct.object.references', 'dd6301b38b5ad9c54b85d07c087aebec89df8b8c769d4da084a55663e6186742', 'o9a450a64cc2a196f55878e2bd9a27a72daea0f17017253f87e7ebd98c71c98c', 'open', '66', '35', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('6be5de81223cc1b38b6e427cc44f8b6a28d2bc96', 'Poor Data Validation 1', 'poor.data.validation.1', 'challenge', 'Poor Data Validation', 'poor.data.validation', 'd30475881612685092e5ec469317dcc5ccc1f548a97bfdb041236b5bba7627bf', 'ca0e89caf3c50dbf9239a0b3c6f6c17869b2a1e2edc3aa6f029fd30925d66c7e', 'open', '67', '35', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('544aa22d3dd16a8232b093848a6523b0712b23da', 'SQL Injection 1', 'sql.injection.1', 'challenge', 'Injection', 'injection', 'fd8e9a29dab791197115b58061b215594211e72c1680f1eacc50b0394133a09f', 'e1e109444bf5d7ae3d67b816538613e64f7d0f51c432a164efc8418513711b0a', 'open', '68', '35', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('2ab09c0c18470ae5f87d219d019a1f603e66f944', 'Reverse Engineering', 'reverse.engineering', 'lesson', 'Mobile Reverse Engineering', 'mobile.reverse.engineering', 'DrumaDrumaDrumBoomBoom', '19753b944b63232812b7af1a0e0adb59928158da5994a39f584cb799f25a95b9', 'open', '75', '40', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('a4bf43f2ba5ced041b03d0b3f9fa3541c520d65d', 'Session Management Challenge 1', 'session.management.challenge.1', 'challenge', 'Session Management', 'session.management', 'db7b1da5d7a43c7100a6f01bb0c', 'dfd6bfba1033fa380e378299b6a998c759646bd8aea02511482b8ce5d707f93a', 'open', '75', '40', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('3d5b46abc6865ba09aaff98a8278a5f5e339abff', 'Failure to Restrict URL Access 1', 'failure.to.restrict.url.access.1', 'challenge', 'Failure to Restrict URL Access', 'failure.to.restrict.url.access', 'c776572b6a9d5b5c6e4aa672a4771213', '4a1bc73dd68f64107db3bbc7ee74e3f1336d350c4e1e51d4eda5b52dddf86c99', 'open', '76', '40', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('1506f22cd73d14d8a73e0ee32006f35d4f234799', 'Unintended Data Leakage', 'unintended.data.leakage', 'lesson', 'Mobile Data Leakage', 'mobile.data.leakage', 'SilentButSteadyRedLed', '392c20397c535845d93c32fd99b94f70afe9cca3f78c1e4766fee1cc08c035ec', 'open', '77', '40', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('453d22238401e0bf6f1ff5d45996407e98e45b07', 'Cross Site Request Forgery', 'cross.site.request.forgery', 'lesson', 'CSRF', 'csrf', '666980771c29857b8a84c686751ce7edaae3d6ac1', 'ed4182af119d97728b2afca6da7cdbe270a9e9dd714065f0f775cd40dc296bc7', 'open', '78', '40', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('5b461ebe2e5e2797740cb3e9c7e3f93449a93e3a', 'Content Provider Leakage', 'content.provider.leakage', 'lesson', 'Mobile Content Provider', 'mobile.content.provider', 'LazerLizardsFlamingWizards', '4d41997b5b81c88f7eb761c1975481c4ce397b80291d99307cfad69662277d39', 'open', '79', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('6f5db377c28da4179bca1a43ede8d6bcf7bd322e', 'Untrusted Input', 'untrusted.input', 'lesson', 'Mobile Security Decisions via Untrusted Input', 'mobile.security.decisions.via.untrusted.input', 'RetroMagicFuturePunch', '5e2b61c679d1f290d23308b3b66c3ec00cd069f1483b705d17f2795a4e77dcb6', 'open', '82', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('52885a3db5b09adc24f38bc453fe348f850649b3', 'Reverse Engineering 1', 'reverse.engineering.1', 'challenge', 'Mobile Reverse Engineering', 'mobile.reverse.engineering', 'christopherjenkins', '072a9e4fc888562563adf8a89fa55050e3e1cfbbbe1d597b0537513ac8665295', 'open', '85', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('b6432a6b5022cb044e9946315c44ab262ab59e88', 'Unvalidated Redirects and Forwards', 'unvalidated.redirects.and.forwards', 'lesson', 'Unvalidated Redirects and Forwards', 'unvalidated.redirects.and.forwards', '658c43abcf81a61ca5234cfd7a2', 'f15f2766c971e16e68aa26043e6016a0a7f6879283c873d9476a8e7e94ea736f', 'open', '86', '45', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('335440fef02d19259254ed88293b62f31cccdd41', 'Client Side Injection', 'client.side.injection', 'lesson', 'Mobile Injection', 'mobile.injection', 'VolcanicEruptionsAbruptInterruptions', 'f758a97011ec4452cc0707e546a7c0f68abc6ef2ab747ea87e0892767152eae1', 'open', '87', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('f771a10efb42a79a9dba262fd2be2e44bf40b66d', 'SQL Injection 2', 'sql.injection.2', 'challenge', 'Injection', 'injection', 'f62abebf5658a6a44c5c9babc7865110c62f5ecd9d0a7052db48c4dbee0200e3', 'ffd39cb26727f34cbf9fce3e82b9d703404e99cdef54d2aa745f497abe070b', 'open', '88', '45', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('d7eaeaa1cc4f218abd86d14eefa183a0f8eb6298', 'NoSQL Injection One', 'nosql.injection.one', 'challenge', 'Injection', 'injection', 'c09f32d4c3dd5b75f04108e5ffc9226cd8840288a62bdaf9dc65828ab6eaf86a', 'd63c2fb5da9b81ca26237f1308afe54491d1bacf9fffa0b21a072b03c5bafe66', 'open', '89', '45', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('0cdd1549e7c74084d7059ce748b93ef657b44457', 'Poor Authentication', 'poor.authentication', 'lesson', 'Mobile Poor Authentication', 'mobile.poor.authentication', 'UpsideDownPizzaDip', '77777b312d5b56a17c1f30550dd34e8d6bd8b037f05341e64e94f5411c10ac8e', 'open', '90', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('ef6496892b8e48ac2f349cdd7c8ecb889fc982af', 'Broken Crypto', 'broken.crypto', 'lesson', 'Mobile Broken Crypto', 'mobile.broken.crypto', '33edeb397d665ed7d1a580f3148d4b2f', '911fa7f4232e096d6a74a0623842c4157e29b9bcc44e8a827be3bb7e58c9a212', 'open', '97', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('f16bf2ab1c1bf400d36330f91e9ac6045edcd003', 'Reverse Engineering 2', 'reverse.engineering.2', 'challenge', 'Mobile Reverse Engineering', 'mobile.reverse.engineering', 'FireStoneElectric', '5bc811f9e744a71393a277c51bfd8fbb5469a60209b44fa3485c18794df4d5b1', 'open', '98', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('c685f8102ae0128c2ab342df64699bb8209a0839', 'SQL Injection Escaping', 'sql.injection.escaping', 'challenge', 'Injection', 'injection', '0dcf9078ba5d878f9e23809ac8f013d1a08fdc8f12c5036f1a4746dbe86c0aac', '8c3c35c30cdbbb73b7be3a4f8587aa9d88044dc43e248984a252c6e861f673d4', 'open', '99', '50', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('b70a84f159876bb9885b6e0087d22f0a52abbfcf', 'Session Management Challenge 2', 'session.management.challenge.2', 'challenge', 'Session Management', 'session.management', '4ba31e5ffe29de092fe1950422a', 'd779e34a54172cbc245300d3bc22937090ebd3769466a501a5e7ac605b9f34b7', 'open', '105', '55', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('20e755179a5840be5503d42bb3711716235005ea', 'CSRF 1', 'csrf.1', 'challenge', 'CSRF', 'csrf', '7639c952a191d569a0c741843b599604c37e33f9f5d8eb07abf0254635320b07', 's74a796e84e25b854906d88f622170c1c06817e72b526b3d1e9a6085f429cf52', 'open', '106', '55', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('0e9e650ffca2d1fe516c5d7b0ce5c32de9e53d1e', 'Session Management Challenge 3', 'session.management.challenge.3', 'challenge', 'Session Management', 'session.management', 'e62008dc47f5eb065229d48963', 't193c6634f049bcf65cdcac72269eeac25dbb2a6887bdb38873e57d0ef447bc3', 'open', '115', '60', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('307f78f18fd6a87e50ed6705231a9f24cd582574', 'Insecure Data Storage 1', 'insecure.data.storage.1', 'challenge', 'Mobile Insecure Data Storage', 'mobile.insecure.data.storage', 'WarshipsAndWrenches', '362f84cf26bf96aeae358d5d0bbee31e9291aaa5367594c29b3af542a7572c01', 'open', '116', '60', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('3f010a976bcbd6a37fba4a10e4a057acc80bdc09', 'Broken Crypto 1', 'broken.crypto.1', 'challenge', 'Mobile Broken Crypto', 'mobile.broken.crypto', 'd1f2df53084b970ab538457f5af34c8b', 'd2f8519f8264f9479f56165465590b499ceca941ab848805c00f5bf0a40c9717', 'open', '117', '60', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('d4e2c37d8f1298fcaf4edcea7292cb76e9eab09b', 'Cross Site Scripting 2', 'cross.site.scripting.2', 'challenge', 'XSS', 'xss', '495ab8cc7fe9532c6a75d378de', 't227357536888e807ff0f0eff751d6034bafe48954575c3a6563cb47a85b1e888', 'open', '119', '60', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('9e46e3c8bde42dc16b9131c0547eedbf265e8f16', 'Reverse Engineering 3', 'reverse.engineering.3', 'challenge', 'Mobile Reverse Engineering', 'mobile.reverse.engineering', 'C1babd72225f0e9934YZ8', 'dbae0baa3f71f196c4d2c6c984d45a6c1c635bf1b482dccfe32e9b01b69a042b', 'open', '120', '76', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('0709410108f91314fb6f7721df9b891351eb2fcc', 'Insecure Cryptographic Storage Challenge 2', 'insecure.cryptographic.storage.challenge.2', 'challenge', 'Insecure Cryptographic Storage', 'insecure.cryptographic.storage', 'TheVigenereCipherIsAmethodOfEncryptingAlphabeticTextByUsingPoly', 'h8aa0fdc145fb8089661997214cc0e685e5f86a87f30c2ca641e1dde15b01177', 'open', '126', '65', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('82e8e9e2941a06852b90c97087309b067aeb2c4c', 'Insecure Direct Object Reference Challenge 2', 'insecure.direct.object.reference.challenge.2', 'challenge', 'Insecure Direct Object References', 'insecure.direct.object.references', '1f746b87a4e3628b90b1927de23f6077abdbbb64586d3ac9485625da21921a0f', 'vc9b78627df2c032ceaf7375df1d847e47ed7abac2a4ce4cb6086646e0f313a4', 'open', '127', '65', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('6319a2e38cc4b2dc9e6d840e1b81db11ee8e5342', 'Cross Site Scripting 3', 'cross.site.scripting.3', 'challenge', 'XSS', 'xss', '6abaf491c9122db375533c04df', 'ad2628bcc79bf10dd54ee62de148ab44b7bd028009a908ce3f1b4d019886d0e', 'open', '128', '65', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('da3de2e556494a9c2fb7308a98454cf55f3a4911', 'Insecure Data Storage 2', 'insecure.data.storage.2', 'challenge', 'Mobile Insecure Data Storage', 'mobile.insecure.data.storage', 'starfish123', 'ec09515a304d2de1f552e961ab769967bdc75740ad2363803168b7907c794cd4', 'open', '129', '65', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('cb7d696bdf88899e8077063d911fc8da14176702', 'Insecure Data Storage 3', 'insecure.data.storage.3', 'challenge', 'Mobile Insecure Data Storage', 'mobile.insecure.data.storage', 'c4ptainBrunch', '11ccaf2f3b2aa4f88265b9cacb5e0ed26b11af978523e34528cf0bb9d32de851', 'open', '130', '60', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('de626470273c01388629e5a56ac6f17e2eef957b', 'Insecure Direct Object Reference Bank', 'insecure.direct.object.reference.bank', 'challenge', 'Insecure Direct Object References', 'insecure.direct.object.references', '4a1df02af317270f844b56edc0c29a09f3dd39faad3e2a23393606769b2dfa35', '1f0935baec6ba69d79cfb2eba5fdfa6ac5d77fadee08585eb98b130ec524d00c', 'open', '131', '60', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('f40b0cd5d45327c9426675313f581cf70c7c7c28', 'Unintended Data Leakage 1', 'unintended.data.leakage.1', 'challenge', 'Mobile Data Leakage', 'mobile.data.leakage', 'BagsofSalsa', '517622a535ff89f7d90674862740b48f53aad7b41390fe46c6f324fee748d136', 'open', '132', '60', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('5dda8dc216bd6a46fccaa4ed45d49404cdc1c82e', 'SQL Injection 3', 'sql.injection.3', 'challenge', 'Injection', 'injection', '9815 1547 3214 7569', 'b7327828a90da59df54b27499c0dc2e875344035e38608fcfb7c1ab8924923f6', 'open', '135', '70', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('94cd2de560d89ef59fc450ecc647ff4d4a55c15d', 'CSRF 2', 'csrf.2', 'challenge', 'CSRF', 'csrf', '45309dbaf8eaf6d1a5f1ecb1bf1b6be368a6542d3da35b9bf0224b88408dc001', 'z311736498a13604705d608fb3171ebf49bc18753b0ec34b8dff5e4f9147eb5e', 'open', '136', '70', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('5ca9115f3279b9b9f3308eb6a59a4fcd374846d6', 'CSRF 3', 'csrf.3', 'challenge', 'CSRF', 'csrf', '6bdbe1901cbe2e2749f347efb9ec2be820cc9396db236970e384604d2d55b62a', 'z6b2f5ebbe112dd09a6c430a167415820adc5633256a7b44a7d1e262db105e3c', 'open', '137', '70', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('a3f7ffd0f9c3d15564428d4df0b91bd927e4e5e4', 'Client Side Injection 1', 'client.side.injection.1', 'challenge', 'Mobile Injection', 'mobile.injection', 'SourHatsAndAngryCats', '8855c8bb9df4446a546414562eda550520e29f7a82400a317c579eb3a5a0a8ef', 'open', '138', '70', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('cfbf7b915ee56508ad46ab79878f37fd9afe0d27', 'CSRF 4', 'csrf.4', 'challenge', 'CSRF', 'csrf', 'bb78f73c7efefec25e518c3a91d50d789b689c4515b453b6140a2e4e1823d203', '84118752e6cd78fecc3563ba2873d944aacb7b72f28693a23f9949ac310648b5', 'open', '139', '70', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('1e3c02ad49fa9a9e396a3b268d7da8f0b647d8f9', 'Unintended Data Leakage 2', 'unintended.data.leakage.2', 'challenge', 'Mobile Data Leakage', 'mobile.data.leakage', '627884736748', '85ceae7ec397c8f4448be51c33a634194bf5da440282227c15954bbdfb54f0c7', 'open', '140', '70', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('fcc1918e0a23b8420e173cf8029876cb887408d3', 'CSRF JSON', 'csrf.json', 'challenge', 'CSRF', 'csrf', 'f57f1377bd847a370d42e1410bfe48c9a3484e78d50e83f851b634fe77d41a6e', '2e0981dcb8278a57dcfaae3b8da0c78d5a70c2d38ea9d8b3e14db3aea01afcbb', 'open', '141', '70', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('ced925f8357a17cfe3225c6236df0f681b2447c4', 'Session Management Challenge 4', 'session.management.challenge.4', 'challenge', 'Session Management', 'session.management', '238a43b12dde07f39d14599a780ae90f87a23e', 'ec43ae137b8bf7abb9c85a87cf95c23f7fadcf08a092e05620c9968bd60fcba6', 'open', '145', '75', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('182f519ef2add981c77a584380f41875edc65a56', 'Cross Site Scripting 4', 'cross.site.scripting.4', 'challenge', 'XSS', 'xss', '515e05137e023dd7828adc03f639c8b13752fbdffab2353ccec', '06f81ca93f26236112f8e31f32939bd496ffe8c9f7b564bce32bd5e3a8c2f751', 'open', '146', '75', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('e0ba96bb4c8d4cd2e1ff0a10a0c82b5362edf998', 'SQL Injection 4', 'sql.injection.4', 'challenge', 'Injection', 'injection', 'd316e80045d50bdf8ed49d48f130b4acf4a878c82faef34daff8eb1b98763b6f', '1feccf2205b4c5ddf743630b46aece3784d61adc56498f7603ccd7cb8ae92629', 'open', '147', '75', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('b3cfd5890649e6815a1c7107cc41d17c82826cfa', 'Insecure Cryptographic Storage Challenge 3', 'insecure.cryptographic.storage.challenge.3', 'challenge', 'Insecure Cryptographic Storage', 'insecure.cryptographic.storage', 'THISISTHESECURITYSHEPHERDABCENCRYPTIONKEY', '2da053b4afb1530a500120a49a14d422ea56705a7e3fc405a77bc269948ccae1', 'open', '148', '75', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('63bc4811a2e72a7c833962e5d47a41251cd90de3', 'Broken Crypto 2', 'broken.crypto.2', 'challenge', 'Mobile Broken Crypto', 'mobile.broken.crypto', 'DancingRobotChilliSauce', 'fb5c9ce0f5539b737e534fd317befff7427f6610ed626dfd43abf35295f106bc', 'open', '149', '75', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('e635fce334aa61fdaa459c21c286d6332eddcdd3', 'Client Side Injection 2', 'client.side.injection.2', 'challenge', 'Mobile Injection', 'mobile.injection', 'BurpingChimneys', 'cfe68711def42bb0b201467b859322dd2750f633246842280dc68c858d208425', 'open', '155', '80', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('0a37cb9296ff3763f7f3a45ff313bce47afa9384', 'CSRF 5', 'csrf.5', 'challenge', 'CSRF', 'csrf', '8f34078ef3e53f619618d9def1ede8a6a9117c77c2fad22f76bba633da83e6d4', '70b96195472adf3bf347cbc37c34489287969d5ba504ac2439915184d6e5dc49', 'open', '156', '80', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('3b14ca3c8f9b90c9b2c8cd1fba9fa67add1272a3', 'Poor Data Validation 2', 'poor.data.validation.2', 'challenge', 'Poor Data Validation', 'poor.data.validation', '05adf1e4afeb5550faf7edbec99170b40e79168ecb3a5da19943f05a3fe08c8e', '20e8c4bb50180fed9c1c8d1bf6af5eac154e97d3ce97e43257c76e73e3bbe5d5', 'open', '157', '80', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('ba6e65e4881c8499b5e53eb33b5be6b5d0f1fb2c', 'Poor Authentication 1', 'poor.authentication.1', 'challenge', 'Mobile Poor Authentication', 'mobile.poor.authentication', 'MegaKillerExtremeCheese', 'efa08298fc6a4add4b9a4bbdbbbb18ac934667971fa275bd7d234589bd8a8467', 'open', '160', '60', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('c7ac1e05faa2d4b1016cfcc726e0689419662784', 'Failure to Restrict URL Access 2', 'failure.to.restrict.url.access.2', 'challenge', 'Failure to Restrict URL Access', 'failure.to.restrict.url.access', '40b675e3d404c52b36abe31d05842b283975ec62e8', '278fa30ee727b74b9a2522a5ca3bf993087de5a0ac72adff216002abf79146fa', 'open', '165', '85', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('fccf8e4d5372ee5a73af5f862dc810545d19b176', 'Cross Site Scripting 5', 'cross.site.scripting.5', 'challenge', 'XSS', 'xss', '7d7cc278c30cca985ab027e9f9e09e2f759e5a3d1f63293', 'f37d45f597832cdc6e91358dca3f53039d4489c94df2ee280d6203b389dd5671', 'open', '166', '85', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('064e28ea4b2f7708b8cb4495d9db1a5e05decdb8', 'Poor Authentication 2', 'poor.authentication.2','challenge', 'Mobile Poor Authentication', 'mobile.poor.authentication', 'MoreRobotsNotEnoughNuts', '808d8372ec7bc7e37e8e3b30d313cb47763926065a4623b27b24cc537fee72a7', 'open', '173', '70', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('a84bbf8737a9ca749d81d5226fc87e0c828138ee', 'SQL Injection 5', 'sql.injection.5', 'challenge', 'Injection', 'injection', '343f2e424d5d7a2eff7f9ee5a5a72fd97d5a19ef7bff3ef2953e033ea32dd7ee', '8edf0a8ed891e6fef1b650935a6c46b03379a0eebab36afcd1d9076f65d4ce62', 'open', '175', '90', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('04a5bd8656fdeceac26e21ef6b04b90eaafbd7d5', 'CSRF 6', 'csrf.6', 'challenge', 'CSRF', 'csrf', 'df611f54325786d42e6deae8bbd0b9d21cf2c9282ec6de4e04166abe2792ac00', '2fff41105149e507c75b5a54e558470469d7024929cf78d570cd16c03bee3569', 'open', '176', '90', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('dc89383763c68cba0aaa1c6f3fd4c17e9d49a805', 'SQL Injection Stored Procedure', 'sql.injection.stored.procedure', 'challenge', 'Injection', 'injection', 'd9c5757c1c086d02d491cbe46a941ecde5a65d523de36ac1bfed8dd4dd9994c8', '7edcbc1418f11347167dabb69fcb54137960405da2f7a90a0684f86c4d45a2e7', 'open', '177', '90', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('6a411618a05e3cef8ccb6f3d7914412d27782a88', 'Content Provider Leakage 1', 'content.provider.leakage.1', 'challenge', 'Mobile Content Provider', 'mobile.content.provider', 'BlueCupNoPartySorry', '2a845ec1943a6342956a48cdc8ca60f40036b68a810109d0b9d2a35271377980', 'open', '178', '75', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('3b1af0ad239325bf494c6e606585320b31612e72', 'Broken Crypto 3', 'broken.crypto.3', 'challenge', 'Mobile Broken Crypto', 'mobile.broken.crypto', 'ShaveTheSkies', 'f5a3f19dd44b53c6d29dda65fa90791bb312a3044b3110acb8a65d165376bf34', 'open', '180', '180', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('c6841bcc326c4bad3a23cd4fa6391eb9bdb146ed', 'Cross Site Scripting 6', 'cross.site.scripting.6', 'challenge', 'XSS', 'xss', 'c13e42171dbd41a7020852ffdd3399b63a87f5', 'd330dea1acf21886b685184ee222ea8e0a60589c3940afd6ebf433469e997caf', 'open', '185', '95', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('ad332a32a6af1f005f9c8d1e98db264eb2ae5dfe', 'SQL Injection 6', 'sql.injection.6', 'challenge', 'Injection', 'injection', '17f999a8b3fbfde54124d6e94b256a264652e5087b14622e1644c884f8a33f82', 'd0e12e91dafdba4825b261ad5221aae15d28c36c7981222eb59f7fc8d8f212a2', 'open', '186', '95', 1, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('ed732e695b85baca21d80966306a9ab5ec37477f', 'Session Management Challenge 5', 'session.management.challenge.5', 'challenge', 'Session Management', 'session.management', 'a15b8ea0b8a3374a1dedc326dfbe3dbae26', '7aed58f3a00087d56c844ed9474c671f8999680556c127a19ee79fa5d7a132e1', 'open', '205', '110', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('adc845f9624716eefabcc90d172bab4096fa2ac4', 'Failure to Restrict URL Access 3', 'failure.to.restrict.url.access.3', 'challenge', 'Failure to Restrict URL Access', 'failure.to.restrict.url.access', '8c1dbfdc7cad35a116535f76f21e448c6c7c0ebc395be2be80e5690e01adec18', 'e40333fc2c40b8e0169e433366350f55c77b82878329570efa894838980de5b4', 'open', '206', '110', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('9294ba32bdbd680e3260a0315cd98bf6ce8b69bd', 'Session Management Challenge 6', 'session.management.challenge.6', 'challenge', 'Session Management', 'session.management', 'bb0eb566322d6b1f1dff388f5eee9929f6f1f9f5cac9eed266ef6e5053fe08e6', 'b5e1020e3742cf2c0880d4098146c4dde25ebd8ceab51807bad88ff47c316ece', 'open', '207', '110', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('6158a695f20f9286d5f12ff3f4d42678f4a9740c', 'Security Misconfig Cookie Flag', 'security.misconfig.cookie.flag', 'challenge', 'Security Misconfigurations', 'security.misconfigurations', '92755de2ebb012e689caf8bfec629b1e237d23438427499b6bf0d7933f1b8215', 'c4285bbc6734a10897d672c1ed3dd9417e0530a4e0186c27699f54637c7fb5d4', 'open', '208', '110', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('368491877a0318e9a774ba5d648c33cb0165ba1e', 'Session Management Challenge 7', 'session.management.challenge.7', 'challenge', 'Session Management', 'session.management', '9042eeaa8455f71deea31a5a32ae51e71477b1581c3612972902206ac51bb621', '269d55bc0e0ff635dcaeec8533085e5eae5d25e8646dcd4b05009353c9cf9c80', 'open', '209', '110', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('64070f5aec0593962a29a141110b9239d73cd7b3', 'SQL Injection 7', 'sql.injection.7', 'challenge', 'Injection', 'injection', '4637cae3d9b961fdff880d6d5ce4f69e91fe23db0aae7dcd4038e20ed8a287dc', '8c2dd7e9818e5c6a9f8562feefa002dc0e455f0e92c8a46ab0cf519b1547eced', 'open', '210', '110', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('145111e80400e4fd48bd3aa5aca382e9c5640793', 'Insecure Cryptographic Storage Challenge 4', 'insecure.cryptographic.storage.challenge.4', 'challenge', 'Insecure Cryptographic Storage', 'insecure.cryptographic.storage', '50980917266ce6ec07471f49b1a046ca6a5034eb9261fb44c3ffc4b16931191c', 'b927fc4d8c9f70a78f8b6fc46a0cc18533a88b2363054a1f391fe855954d12f9', 'open', '211', '115', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('7153290d128cfdef5f40742dbaeb129a36ac2340', 'Session Management Challenge 8', 'session.management.challenge.8', 'challenge', 'Session Management', 'session.management', '11d84b0ad628bb6e99e0640ff1791a29a1938609829ef5bdccee92b2bccd2bcd', '714d8601c303bbef8b5cabab60b1060ac41f0d96f53b6ea54705bb1ea4316334', 'open', '215', '115', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('853c98bd070fe0d31f1ec8b4f2ada9d7fd1784c5', 'CSRF 7', 'csrf.7', 'challenge', 'CSRF', 'csrf', '849e1efbb0c1e870d17d32a3e1b18a8836514619146521fbec6623fce67b73e8', '7d79ea2b2a82543d480a63e55ebb8fef3209c5d648b54d1276813cd072815df3', 'open', '235', '120', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('f02ce6bcd0a822d245433533997eaf44379065f4', 'Insecure Cryptographic Storage Home Made Key', 'insecure.cryptographic.storage.home.made.key', 'challenge', 'Insecure Cryptographic Storage', 'insecure.cryptographic.storage', '59A8D9A8020C61B3D76A600F94AJCECEABEDD44DF26874BD070BD07D', '9e5ed059b23632c8801d95621fa52071b2eb211d8c044dde6d2f4b89874a7bc4', 'open', '240', '140', 0, 0); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('df2ac757cc135dcb8ce5ea01f677c74f04b446d6', 'XXE Injection', 'xxe.lessons', 'lesson', 'Injection', 'injection', 'c8c232cd8e3abdfea3fcef24379415a65e00ac197af09e82602e231aa3031879', '57dda1bf9a2ca1c34e04f815491ef40836d9b710179cd19754ec5b3c31f27d1a', 'closed', '55', '30', 1, 1); +INSERT INTO modules (`moduleId`, `moduleName`, `moduleNameLangPointer`, `moduleType`, `moduleCategory`, `moduleCategoryLangPointer`, `moduleResult`, `moduleHash`, `moduleStatus`, `incrementalRank`, `scoreValue`, `hardcodedKey`, `isUnsafe`) VALUES ('08b3dffd4b837ebe53d52e53b5bbbabf4a4ca9ae', 'XXE Injection 1', 'xxe.injection.1', 'challenge', 'Injection', 'injection', '1016d6dce9f715e9eab4f3a884b3b316cfbba8fb4023c19f34c62bd936d5695b', 'ac8f3f6224b1ea3fb8a0f017aadd0d84013ea2c80e232c980e54dd753700123e', 'closed', '60', '40', 1, 1); +COMMIT; + +-- ----------------------------------------------------- +SELECT "Data for table cheatsheet" FROM DUAL; +-- ----------------------------------------------------- +SET AUTOCOMMIT=0; +USE `core`; +COMMIT; + +COMMIT; +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('1ed105033900e462b26ca0685b00d98f59efcd93', '0dbea4cb5811fff0527184f99bd5034ca9286f11', '2012-02-10 10:11:53', '0dbea4cb5811fff0527184f99bd5034ca9286f11.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('286ac1acdd084193e940e6f56df5457ff05a9fe1', '453d22238401e0bf6f1ff5d45996407e98e45b07', '2012-02-10 10:11:53', '453d22238401e0bf6f1ff5d45996407e98e45b07.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('44a6af94f6f7a16cc92d84a936cb5c7825967b47', 'cd7f70faed73d2457219b951e714ebe5775515d8', '2012-02-10 10:11:53', 'cd7f70faed73d2457219b951e714ebe5775515d8.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('5487f2bf98beeb3aea66941ae8257a5e0bec38bd', '2dc909fd89c2b03059b1512e7b54ce5d1aaa4bb4', '2012-02-10 10:11:53', '2dc909fd89c2b03059b1512e7b54ce5d1aaa4bb4.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('5eccb1b8b1c033bba8ef928089808751cbe6e1f8', '94cd2de560d89ef59fc450ecc647ff4d4a55c15d', '2012-02-10 10:11:53', '94cd2de560d89ef59fc450ecc647ff4d4a55c15d.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('6924e936f811e174f206d5432cf7510a270a18fa', 'b70a84f159876bb9885b6e0087d22f0a52abbfcf', '2012-02-10 10:11:53', 'b70a84f159876bb9885b6e0087d22f0a52abbfcf.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('7382ff2f7ee416bf0d37961ec54de32c502351de', 'a4bf43f2ba5ced041b03d0b3f9fa3541c520d65d', '2012-02-10 10:11:53', 'a4bf43f2ba5ced041b03d0b3f9fa3541c520d65d.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('776ef847e16dde4b1d65a476918d2157f62f8c91', '5ca9115f3279b9b9f3308eb6a59a4fcd374846d6', '2012-02-10 10:11:53', '5ca9115f3279b9b9f3308eb6a59a4fcd374846d6.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('82c207a4e07cbfc54faec884be6db0524e74829e', '891a0208a95f1791287be721a4b851d4c584880a', '2012-02-10 10:11:53', '891a0208a95f1791287be721a4b851d4c584880a.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('860e5ed692c956c2ae6c4ba20c95313d9f5b0383', 'b6432a6b5022cb044e9946315c44ab262ab59e88', '2012-02-10 10:11:53', 'b6432a6b5022cb044e9946315c44ab262ab59e88.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('945b7dcdef1a36ded2ab008422396f8ba51c0630', 'd4e2c37d8f1298fcaf4edcea7292cb76e9eab09b', '2012-02-10 10:11:53', 'd4e2c37d8f1298fcaf4edcea7292cb76e9eab09b.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('97f946ed0bbda4f85e472321a256eacf2293239d', '20e755179a5840be5503d42bb3711716235005ea', '2012-02-10 10:11:53', '20e755179a5840be5503d42bb3711716235005ea.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('af5959a242047ee87f728b87570a4e9ed9417e5e', '544aa22d3dd16a8232b093848a6523b0712b23da', '2012-02-10 10:11:53', '544aa22d3dd16a8232b093848a6523b0712b23da.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('b8515347017439da4216c6f8d984326eb21652d0', '52c5394cdedfb2e95b3ad8b92d0d6c9d1370ea9a', '2012-02-10 10:11:53', '52c5394cdedfb2e95b3ad8b92d0d6c9d1370ea9a.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('b921c6b7dc82648f0a0d07513f3eecb39b3ed064', 'ca8233e0398ecfa76f9e05a49d49f4a7ba390d07', '2012-02-10 10:11:53', 'ca8233e0398ecfa76f9e05a49d49f4a7ba390d07.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('ba4e0a2727561c41286aa850b89022c09e088b67', '0e9e650ffca2d1fe516c5d7b0ce5c32de9e53d1e', '2012-02-10 10:11:53', '0e9e650ffca2d1fe516c5d7b0ce5c32de9e53d1e.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('bb94a8412d7bb95f84c73afa420ca57fbc917912', '9533e21e285621a676bec58fc089065dec1f59f5', '2012-02-10 10:11:53', '9533e21e285621a676bec58fc089065dec1f59f5.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('c0b869ff8a4cd1f388e5e6bdd6525d176175c296', '408610f220b4f71f7261207a17055acbffb8a747', '2012-02-10 10:11:53', '408610f220b4f71f7261207a17055acbffb8a747.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('c0ed3f81fc615f28a39ed2c23555cea074e513f0', '0709410108f91314fb6f7721df9b891351eb2fcc', '2012-02-10 10:11:53', '0709410108f91314fb6f7721df9b891351eb2fcc.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('d0a0742494656c79767864b2898247df4f37b728', '6319a2e38cc4b2dc9e6d840e1b81db11ee8e5342', '2012-02-10 10:11:53', '6319a2e38cc4b2dc9e6d840e1b81db11ee8e5342.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('d51277769f9452b6508a3a22d9f52bea3b0ff84d', 'f771a10efb42a79a9dba262fd2be2e44bf40b66d', '2012-02-10 10:11:53', 'f771a10efb42a79a9dba262fd2be2e44bf40b66d.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('e7e44ba680b2ab1f6958b1344c9e43931b81164a', '5dda8dc216bd6a46fccaa4ed45d49404cdc1c82e', '2012-02-10 10:11:53', '5dda8dc216bd6a46fccaa4ed45d49404cdc1c82e.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('f392e5a69475b14fbe5ae17639e174f379c0870e', '201ae6f8c55ba3f3b5881806387fbf34b15c30c2', '2012-02-10 10:11:53', '201ae6f8c55ba3f3b5881806387fbf34b15c30c2.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('6afa50948e10466e9a94c7c2b270b3f958e412c6', '82e8e9e2941a06852b90c97087309b067aeb2c4c', '2012-02-10 10:11:53', '82e8e9e2941a06852b90c97087309b067aeb2c4c.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('c424a4c7012ac39a4aef70f15f51ecc8fa209411', 'df2ac757cc135dcb8ce5ea01f677c74f04b446d6', '2020-02-11 10:11:53', 'df2ac757cc135dcb8ce5ea01f677c74f04b446d6.solution'); +INSERT INTO `core`.`cheatsheet` (`cheatSheetId`, `moduleId`, `createDate`, `solution`) VALUES ('e6ce51d31070bef895bf9763caeff78a0c7c2cc9', '08b3dffd4b837ebe53d52e53b5bbbabf4a4ca9ae', '2020-10-09 10:11:53', '08b3dffd4b837ebe53d52e53b5bbbabf4a4ca9ae.solution'); +CALL cheatSheetCreate('a84bbf8737a9ca749d81d5226fc87e0c828138ee', 'a84bbf8737a9ca749d81d5226fc87e0c828138ee.solution'); +CALL cheatSheetCreate('e0ba96bb4c8d4cd2e1ff0a10a0c82b5362edf998', 'e0ba96bb4c8d4cd2e1ff0a10a0c82b5362edf998.solution'); +CALL cheatSheetCreate('ad332a32a6af1f005f9c8d1e98db264eb2ae5dfe', 'ad332a32a6af1f005f9c8d1e98db264eb2ae5dfe.solution'); +CALL cheatSheetCreate('182f519ef2add981c77a584380f41875edc65a56', '182f519ef2add981c77a584380f41875edc65a56.solution'); +CALL cheatSheetCreate('fccf8e4d5372ee5a73af5f862dc810545d19b176', 'fccf8e4d5372ee5a73af5f862dc810545d19b176.solution'); +CALL cheatSheetCreate('0a37cb9296ff3763f7f3a45ff313bce47afa9384', '0a37cb9296ff3763f7f3a45ff313bce47afa9384.solution'); +CALL cheatSheetCreate('04a5bd8656fdeceac26e21ef6b04b90eaafbd7d5', '04a5bd8656fdeceac26e21ef6b04b90eaafbd7d5.solution'); +CALL cheatSheetCreate('853c98bd070fe0d31f1ec8b4f2ada9d7fd1784c5', '853c98bd070fe0d31f1ec8b4f2ada9d7fd1784c5.solution'); +CALL cheatSheetCreate('3d5b46abc6865ba09aaff98a8278a5f5e339abff', '3d5b46abc6865ba09aaff98a8278a5f5e339abff.solution'); +CALL cheatSheetCreate('c7ac1e05faa2d4b1016cfcc726e0689419662784', 'c7ac1e05faa2d4b1016cfcc726e0689419662784.solution'); +CALL cheatSheetCreate('b3cfd5890649e6815a1c7107cc41d17c82826cfa', 'b3cfd5890649e6815a1c7107cc41d17c82826cfa.solution'); +CALL cheatSheetCreate('ced925f8357a17cfe3225c6236df0f681b2447c4', 'ced925f8357a17cfe3225c6236df0f681b2447c4.solution'); +CALL cheatSheetCreate('c6841bcc326c4bad3a23cd4fa6391eb9bdb146ed', 'c6841bcc326c4bad3a23cd4fa6391eb9bdb146ed.solution'); +CALL cheatsheetCreate('53a53a66cb3bf3e4c665c442425ca90e29536edd', '53a53a66cb3bf3e4c665c442425ca90e29536edd.solution'); +CALL cheatsheetCreate('307f78f18fd6a87e50ed6705231a9f24cd582574', '307f78f18fd6a87e50ed6705231a9f24cd582574.solution'); +CALL cheatsheetCreate('da3de2e556494a9c2fb7308a98454cf55f3a4911', 'da3de2e556494a9c2fb7308a98454cf55f3a4911.solution'); +CALL cheatsheetCreate('335440fef02d19259254ed88293b62f31cccdd41', '335440fef02d19259254ed88293b62f31cccdd41.solution'); +CALL cheatsheetCreate('a3f7ffd0f9c3d15564428d4df0b91bd927e4e5e4', 'a3f7ffd0f9c3d15564428d4df0b91bd927e4e5e4.solution'); +CALL cheatsheetCreate('e635fce334aa61fdaa459c21c286d6332eddcdd3', 'e635fce334aa61fdaa459c21c286d6332eddcdd3.solution'); +CALL cheatsheetCreate('ef6496892b8e48ac2f349cdd7c8ecb889fc982af', 'ef6496892b8e48ac2f349cdd7c8ecb889fc982af.solution'); +CALL cheatsheetCreate('3f010a976bcbd6a37fba4a10e4a057acc80bdc09', '3f010a976bcbd6a37fba4a10e4a057acc80bdc09.solution'); +CALL cheatsheetCreate('63bc4811a2e72a7c833962e5d47a41251cd90de3', '63bc4811a2e72a7c833962e5d47a41251cd90de3.solution'); +CALL cheatsheetCreate('2ab09c0c18470ae5f87d219d019a1f603e66f944', '2ab09c0c18470ae5f87d219d019a1f603e66f944.solution'); +CALL cheatsheetCreate('f16bf2ab1c1bf400d36330f91e9ac6045edcd003', 'f16bf2ab1c1bf400d36330f91e9ac6045edcd003.solution'); +CALL cheatsheetCreate('9e46e3c8bde42dc16b9131c0547eedbf265e8f16', '9e46e3c8bde42dc16b9131c0547eedbf265e8f16.solution'); +CALL cheatsheetCreate('1506f22cd73d14d8a73e0ee32006f35d4f234799', '1506f22cd73d14d8a73e0ee32006f35d4f234799.solution'); +CALL cheatSheetCreate('ed732e695b85baca21d80966306a9ab5ec37477f', 'ed732e695b85baca21d80966306a9ab5ec37477f.solution'); +CALL cheatSheetCreate('cfbf7b915ee56508ad46ab79878f37fd9afe0d27', 'cfbf7b915ee56508ad46ab79878f37fd9afe0d27.solution'); +CALL cheatSheetCreate('9294ba32bdbd680e3260a0315cd98bf6ce8b69bd', '9294ba32bdbd680e3260a0315cd98bf6ce8b69bd.solution'); +CALL cheatSheetCreate('7153290d128cfdef5f40742dbaeb129a36ac2340', '7153290d128cfdef5f40742dbaeb129a36ac2340.solution'); +CALL cheatSheetCreate('145111e80400e4fd48bd3aa5aca382e9c5640793', '145111e80400e4fd48bd3aa5aca382e9c5640793.solution'); +CALL cheatSheetCreate('adc845f9624716eefabcc90d172bab4096fa2ac4', 'adc845f9624716eefabcc90d172bab4096fa2ac4.solution'); +CALL cheatSheetCreate('64070f5aec0593962a29a141110b9239d73cd7b3', '64070f5aec0593962a29a141110b9239d73cd7b3.solution'); +CALL cheatSheetCreate('1e3c02ad49fa9a9e396a3b268d7da8f0b647d8f9', '1e3c02ad49fa9a9e396a3b268d7da8f0b647d8f9.solution'); +CALL cheatSheetCreate('f40b0cd5d45327c9426675313f581cf70c7c7c28', 'f40b0cd5d45327c9426675313f581cf70c7c7c28.solution'); +CALL cheatSheetCreate('ba6e65e4881c8499b5e53eb33b5be6b5d0f1fb2c', 'ba6e65e4881c8499b5e53eb33b5be6b5d0f1fb2c.solution'); +CALL cheatSheetCreate('52885a3db5b09adc24f38bc453fe348f850649b3', '52885a3db5b09adc24f38bc453fe348f850649b3.solution'); +CALL cheatSheetCreate('3b1af0ad239325bf494c6e606585320b31612e72', '3b1af0ad239325bf494c6e606585320b31612e72.solution'); +CALL cheatSheetCreate('0cdd1549e7c74084d7059ce748b93ef657b44457', '0cdd1549e7c74084d7059ce748b93ef657b44457.solution'); +CALL cheatSheetCreate('368491877a0318e9a774ba5d648c33cb0165ba1e', '368491877a0318e9a774ba5d648c33cb0165ba1e.solution'); +CALL cheatSheetCreate('6be5de81223cc1b38b6e427cc44f8b6a28d2bc96', '6be5de81223cc1b38b6e427cc44f8b6a28d2bc96.solution'); +CALL cheatSheetCreate('3b14ca3c8f9b90c9b2c8cd1fba9fa67add1272a3', '3b14ca3c8f9b90c9b2c8cd1fba9fa67add1272a3.solution'); +CALL cheatSheetCreate('b9d82aa7b46ddaddb6acfe470452a8362136a31e', 'b9d82aa7b46ddaddb6acfe470452a8362136a31e.solution'); +CALL cheatSheetCreate('bf847c4a8153d487d6ec36f4fca9b77749597c64', 'bf847c4a8153d487d6ec36f4fca9b77749597c64.solution'); +CALL cheatSheetCreate('fcc1918e0a23b8420e173cf8029876cb887408d3', 'fcc1918e0a23b8420e173cf8029876cb887408d3.solution'); +CALL cheatSheetCreate('6158a695f20f9286d5f12ff3f4d42678f4a9740c', '6158a695f20f9286d5f12ff3f4d42678f4a9740c.solution'); +CALL cheatSheetCreate('de626470273c01388629e5a56ac6f17e2eef957b', 'de626470273c01388629e5a56ac6f17e2eef957b.solution'); +CALL cheatSheetCreate('dc89383763c68cba0aaa1c6f3fd4c17e9d49a805', 'dc89383763c68cba0aaa1c6f3fd4c17e9d49a805.solution'); +CALL cheatSheetCreate('5b461ebe2e5e2797740cb3e9c7e3f93449a93e3a', '5b461ebe2e5e2797740cb3e9c7e3f93449a93e3a.solution'); +CALL cheatSheetCreate('c685f8102ae0128c2ab342df64699bb8209a0839', 'c685f8102ae0128c2ab342df64699bb8209a0839.solution'); +CALL cheatSheetCreate('d7eaeaa1cc4f218abd86d14eefa183a0f8eb6298', 'd7eaeaa1cc4f218abd86d14eefa183a0f8eb6298.solution'); +CALL cheatSheetCreate('5ca9115f3279b9b9f3308eb6a59a4fcd374846d6', '5ca9115f3279b9b9f3308eb6a59a4fcd374846d6.solution'); +CALL cheatSheetCreate('6f5db377c28da4179bca1a43ede8d6bcf7bd322e', '6f5db377c28da4179bca1a43ede8d6bcf7bd322e.solution'); +CALL cheatSheetCreate('f02ce6bcd0a822d245433533997eaf44379065f4', 'f02ce6bcd0a822d245433533997eaf44379065f4.solution'); +CALL cheatSheetCreate('df2ac757cc135dcb8ce5ea01f677c74f04b446d6', 'df2ac757cc135dcb8ce5ea01f677c74f04b446d6.solution'); +CALL cheatSheetCreate('08b3dffd4b837ebe53d52e53b5bbbabf4a4ca9ae', '08b3dffd4b837ebe53d52e53b5bbbabf4a4ca9ae.solution'); + +COMMIT; + +-- Default admin user +-- Use password shepherd-admin +call userCreate(null, 'admin', '$argon2i$v=19$m=65535,t=10,p=1$Z05BaG5SdTZaQ3l2OUJvbA$SN7TyTDF/gd07wi7T96RK8pYgQ', 'admin', null, 'admin@securityShepherd.org', 'login', false, false); + +-- Generate a user account +call userCreate(null, '<%= @unix_username %>', '$argon2i$v=19$m=65536,t=10,p=1$7oxgR8QkdOd4tsHFieFKrw$eOy0TCxhY1bQIAbLQcLr9Sz2+4q9DhPTz1frsytgtTk', 'player', null, '<%= @unix_username %> @securityShepherd.org', 'login', true, false); + +-- Enable backup script + +SELECT "Creating BackUp Schema" FROM DUAL; + +DROP DATABASE IF EXISTS backup; +CREATE DATABASE backup; + +SET GLOBAL event_scheduler = ON; +SET @@global.event_scheduler = ON; +SET GLOBAL event_scheduler = 1; +SET @@global.event_scheduler = 1; + +USE core; +DELIMITER $$ + +drop event IF EXISTS update_status; + +create event update_status +on schedule every 1 minute +do + +BEGIN + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +drop table IF EXISTS `backup`.`users`; +drop table IF EXISTS `backup`.`class`; +drop table IF EXISTS `backup`.`modules`; +drop table IF EXISTS `backup`.`results`; +drop table IF EXISTS `backup`.`cheatsheet`; +drop table IF EXISTS `backup`.`sequence`; +-- ----------------------------------------------------- +-- Table `core`.`class` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `backup`.`class` ( + `classId` VARCHAR(64) NOT NULL , + `className` VARCHAR(32) NOT NULL , + `classYear` VARCHAR(5) NOT NULL , + PRIMARY KEY (`classId`) ) +ENGINE = InnoDB; + +-- ----------------------------------------------------- +-- Table `core`.`users` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `backup`.`users` ( + `userId` VARCHAR(64) NOT NULL , + `classId` VARCHAR(64) NULL , + `userName` VARCHAR(32) NOT NULL , + `userPass` VARCHAR(191) NOT NULL , + `userRole` VARCHAR(32) NOT NULL , + `badLoginCount` INT NOT NULL DEFAULT 0 , + `suspendedUntil` DATETIME NOT NULL DEFAULT '1000-01-01 00:00:00' , + `userAddress` VARCHAR(128) NULL , + `tempPassword` TINYINT(1) NULL DEFAULT FALSE , + `userScore` INT NOT NULL DEFAULT 0 , + PRIMARY KEY (`userId`) , + INDEX `classId` (`classId` ASC) , + UNIQUE INDEX `userName_UNIQUE` (`userName` ASC) , + CONSTRAINT `classId` + FOREIGN KEY (`classId` ) + REFERENCES `backup`.`class` (`classId` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + +-- ----------------------------------------------------- +-- Table `core`.`modules` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `backup`.`modules` ( + `moduleId` VARCHAR(64) NOT NULL , + `moduleName` VARCHAR(64) NOT NULL , + `moduleType` VARCHAR(16) NOT NULL , + `moduleCategory` VARCHAR(64) NULL , + `moduleResult` VARCHAR(191) NULL , + `moduleHash` VARCHAR(191) NULL , + `incrementalRank` INT NULL , + `scoreValue` INT NOT NULL DEFAULT 50 , + `scoreBonus` INT NOT NULL DEFAULT 5 , + PRIMARY KEY (`moduleId`) ) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `core`.`results` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `backup`.`results` ( + `userId` VARCHAR(64) NOT NULL , + `moduleId` VARCHAR(64) NOT NULL , + `startTime` DATETIME NOT NULL , + `finishTime` DATETIME NULL , + `csrfCount` INT NULL DEFAULT 0 , + `resultSubmission` LONGTEXT NULL , + `knowledgeBefore` INT NULL , + `knowledgeAfter` INT NULL , + `difficulty` INT NULL , + PRIMARY KEY (`userId`, `moduleId`) , + INDEX `fk_Results_Modules1` (`moduleId` ASC) , + CONSTRAINT `fk_Results_users1` + FOREIGN KEY (`userId` ) + REFERENCES `backup`.`users` (`userId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Results_Modules1` + FOREIGN KEY (`moduleId` ) + REFERENCES `backup`.`modules` (`moduleId` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `core`.`cheatsheet` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `backup`.`cheatsheet` ( + `cheatSheetId` VARCHAR(64) NOT NULL , + `moduleId` VARCHAR(64) NOT NULL , + `createDate` DATETIME NOT NULL , + `solution` LONGTEXT NOT NULL , + PRIMARY KEY (`cheatSheetId`, `moduleId`) , + INDEX `fk_CheatSheet_Modules1` (`moduleId` ASC) , + CONSTRAINT `fk_CheatSheet_Modules1` + FOREIGN KEY (`moduleId` ) + REFERENCES `backup`.`modules` (`moduleId` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `core`.`sequence` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `backup`.`sequence` ( + `tableName` VARCHAR(32) NOT NULL , + `currVal` BIGINT(20) NOT NULL DEFAULT 282475249 , + PRIMARY KEY (`tableName`) ) +ENGINE = InnoDB; + + + +Insert into `backup`.`class` (Select * from `core`.`class`); +Insert into `backup`.`users` (Select * from `core`.`users`); +Insert into `backup`.`modules` (Select * from `core`.`modules`); +Insert into `backup`.`results` (Select * from `core`.`results`); +Insert into `backup`.`cheatsheet` (Select * from `core`.`cheatsheet`); +Insert into `backup`.`sequence` (Select * from `core`.`sequence`); + +END + + $$ +DELIMITER ; +; diff --git a/modules/vulnerabilities/unix/web_training/security_shepherd/templates/flags.erb b/modules/vulnerabilities/unix/web_training/security_shepherd/templates/flags.erb new file mode 100644 index 000000000..97f8cfc04 --- /dev/null +++ b/modules/vulnerabilities/unix/web_training/security_shepherd/templates/flags.erb @@ -0,0 +1,4 @@ +<% @flag_store.each do |flag| -%> +<%= flag %> +<% end -%> + diff --git a/scenarios/examples/vulnerability_examples/shepherd.xml b/scenarios/examples/vulnerability_examples/shepherd.xml new file mode 100644 index 000000000..73ddadf1b --- /dev/null +++ b/scenarios/examples/vulnerability_examples/shepherd.xml @@ -0,0 +1,48 @@ + + + + + + shepherd + + + + + + + SQL + CSRF + + + + + + + 10 + + + + + + + + + + user1 + + + password + + + true + + + + + + + + + \ No newline at end of file