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 ff305bdf6..2ea38957d 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
@@ -35,13 +35,13 @@ public class SqlInjectionLesson10 extends AssignmentEndpoint {
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet results = statement.executeQuery(query);
- if (results.getStatement() != null && results.first()) {
+ if (results.getStatement() != null) {
+ results.first();
output.append(SqlInjectionLesson8.generateTable(results));
- results.last();
return trackProgress(failed().feedback("sql-injection.10.entries").output(output.toString()).build());
} else {
if (tableExists(connection)) {
- return trackProgress(failed().output(output.toString()).build());
+ return trackProgress(failed().feedback("sql-injection.10.entries").output(output.toString()).build());
}
else {
return trackProgress(success().feedback("sql-injection.10.success").build());
@@ -49,7 +49,7 @@ public class SqlInjectionLesson10 extends AssignmentEndpoint {
}
} catch (SQLException e) {
if (tableExists(connection)) {
- return trackProgress(failed().output("" + e.getMessage() + "
" + output.toString()).build());
+ return trackProgress(failed().feedback("sql-injection.error").output("" + e.getMessage() + "
" + output.toString()).build());
}
else {
return trackProgress(success().feedback("sql-injection.10.success").build());
@@ -61,15 +61,21 @@ public class SqlInjectionLesson10 extends AssignmentEndpoint {
}
}
- private boolean tableExists(Connection connection) throws SQLException {
- ResultSet res = connection.getMetaData().getTables(null, null, "access_log", null);
- while (res.next()) {
- String table_name = res.getString("TABLE_NAME");
- if (table_name != null && table_name.equals("access_log")) {
- return true;
+ private boolean tableExists(Connection connection) {
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet results = stmt.executeQuery("SELECT * FROM access_log");
+ int cols = results.getMetaData().getColumnCount();
+ return (cols > 0);
+ } catch (SQLException e) {
+ String error_msg = e.getMessage();
+ if (error_msg.contains("object not found: ACCESS_LOG")) {
+ return false;
+ } else {
+ System.err.println(e.getMessage());
+ return false;
}
}
- return false;
}
}