diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/session/CreateDB.java b/webgoat-container/src/main/java/org/owasp/webgoat/session/CreateDB.java
index 31e1bb3da..a34e734db 100644
--- a/webgoat-container/src/main/java/org/owasp/webgoat/session/CreateDB.java
+++ b/webgoat-container/src/main/java/org/owasp/webgoat/session/CreateDB.java
@@ -1007,7 +1007,7 @@ public class CreateDB {
+ "first_name varchar(20),"
+ "last_name varchar(20),"
+ "department varchar(20),"
- + "salary varchar(10),"
+ + "salary int,"
+ "auth_tan varchar(6)"
+ ")";
statement.executeUpdate(createTableStatement);
@@ -1016,11 +1016,11 @@ public class CreateDB {
}
// Populate
- String insertData1 = "INSERT INTO employees VALUES ('32147','Paulina', 'Travers', 'Accounting', '$46.000', 'P45JSI')";
- String insertData2 = "INSERT INTO employees VALUES ('89762','Tobi', 'Barnett', 'Development', '$77.000', 'TA9LL1')";
- String insertData3 = "INSERT INTO employees VALUES ('96134','Bob', 'Franco', 'Marketing', '$83.700', 'LO9S2V')";
- String insertData4 = "INSERT INTO employees VALUES ('34477','Abraham ', 'Holman', 'Development', '$50.000', 'UU2ALK')";
- String insertData5 = "INSERT INTO employees VALUES ('37648','John', 'Smith', 'Marketing', '$64.350', '3SL99A')";
+ String insertData1 = "INSERT INTO employees VALUES ('32147','Paulina', 'Travers', 'Accounting', 46000, 'P45JSI')";
+ String insertData2 = "INSERT INTO employees VALUES ('89762','Tobi', 'Barnett', 'Development', 77000, 'TA9LL1')";
+ String insertData3 = "INSERT INTO employees VALUES ('96134','Bob', 'Franco', 'Marketing', 83700, 'LO9S2V')";
+ String insertData4 = "INSERT INTO employees VALUES ('34477','Abraham ', 'Holman', 'Development', 50000, 'UU2ALK')";
+ String insertData5 = "INSERT INTO employees VALUES ('37648','John', 'Smith', 'Marketing', 64350, '3SL99A')";
statement.executeUpdate(insertData1);
statement.executeUpdate(insertData2);
statement.executeUpdate(insertData3);
diff --git a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson10.java b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson10.java
index 2fd3fdb3a..ff305bdf6 100644
--- a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson10.java
+++ b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson10.java
@@ -25,23 +25,20 @@ public class SqlInjectionLesson10 extends AssignmentEndpoint {
}
protected AttackResult injectableQueryAvailability(String action) {
+ StringBuffer output = new StringBuffer();
+ String query = "SELECT * FROM access_log WHERE action LIKE '%" + action + "%'";
+
try {
Connection connection = DatabaseUtilities.getConnection(getWebSession());
- String query = "SELECT * FROM access_log WHERE action LIKE '%" + action + "%'";
-
- StringBuffer output = new StringBuffer();
try {
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet results = statement.executeQuery(query);
- if ((results != null) && (results.first())) {
- ResultSetMetaData resultsMetaData = results.getMetaData();
-
- output.append(SqlInjectionLesson8.generateTable(results, resultsMetaData));
+ if (results.getStatement() != null && results.first()) {
+ output.append(SqlInjectionLesson8.generateTable(results));
results.last();
-
- return trackProgress(failed().output(output.toString()).build());
+ return trackProgress(failed().feedback("sql-injection.10.entries").output(output.toString()).build());
} else {
if (tableExists(connection)) {
return trackProgress(failed().output(output.toString()).build());
@@ -52,7 +49,7 @@ public class SqlInjectionLesson10 extends AssignmentEndpoint {
}
} catch (SQLException e) {
if (tableExists(connection)) {
- return trackProgress(failed().output(output.toString()).build());
+ return trackProgress(failed().output("" + e.getMessage() + "
" + output.toString()).build());
}
else {
return trackProgress(success().feedback("sql-injection.10.success").build());
@@ -60,7 +57,7 @@ public class SqlInjectionLesson10 extends AssignmentEndpoint {
}
} catch (Exception e) {
- return trackProgress(failed().output(this.getClass().getName() + " : " + e.getMessage()).build());
+ return trackProgress(failed().output("" + e.getMessage() + "").build());
}
}
diff --git a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson8.java b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson8.java
index f7144f893..f03b19c6c 100644
--- a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson8.java
+++ b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjectionLesson8.java
@@ -27,68 +27,75 @@ public class SqlInjectionLesson8 extends AssignmentEndpoint {
}
protected AttackResult injectableQueryConfidentiality(String name, String auth_tan) {
+ StringBuffer output = new StringBuffer();
+ String query = "SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "'";
+
try {
Connection connection = DatabaseUtilities.getConnection(getWebSession());
- String query = "SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "'";
try {
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
log(connection, query);
ResultSet results = statement.executeQuery(query);
- if ((results != null) && (results.first())) {
- ResultSetMetaData resultsMetaData = results.getMetaData();
- StringBuffer output = new StringBuffer();
+ if (results.getStatement() != null) {
+ if (results.first()) {
+ output.append(generateTable(results));
+ results.last();
- output.append(generateTable(results, resultsMetaData));
- results.last();
+ if (results.getRow() > 1) {
+ // more than one record, the user succeeded
+ return trackProgress(success().feedback("sql-injection.8.success").output(output.toString()).build());
+ } else {
+ // only one record
+ return trackProgress(failed().feedback("sql-injection.8.one").output(output.toString()).build());
+ }
- // If they get back more than one user they succeeded
- if (results.getRow() > 1) {
- return trackProgress(success().feedback("sql-injection.8.success").feedbackArgs(output.toString()).build());
} else {
- return trackProgress(failed().output(output.toString()).build());
+ // no results
+ return trackProgress(failed().feedback("sql-injection.8.no.results").build());
}
} else {
- return trackProgress(failed().feedback("sql-injection.8.no.results").build());
+ return trackProgress(failed().feedback("sql-injection.error").build());
}
} catch (SQLException e) {
- return trackProgress(failed().output(e.getMessage()).build());
+ return trackProgress(failed().feedback("sql-injection.error").output("
" + e.getMessage() + "").build());
}
} catch (Exception e) {
- return trackProgress(failed().output(this.getClass().getName() + " : " + e.getMessage()).build());
+ return trackProgress(failed().feedback("sql-injection.error").output("
" + e.getMessage() + "").build());
}
}
- public static String generateTable(ResultSet results, ResultSetMetaData resultsMetaData) throws SQLException {
+ public static String generateTable(ResultSet results) throws SQLException {
+ ResultSetMetaData resultsMetaData = results.getMetaData();
int numColumns = resultsMetaData.getColumnCount();
results.beforeFirst();
- StringBuffer t = new StringBuffer();
- t.append("
" + resultsMetaData.getColumnName(i) + " | "); + table.append("" + resultsMetaData.getColumnName(i) + " | "); } - t.append("
---|---|
" + results.getString(i) + " | "); + table.append("" + results.getString(i) + " | "); } - t.append("