diff --git a/main/project/JavaSource/org/owasp/webgoat/lessons/Challenge2Screen.java b/main/project/JavaSource/org/owasp/webgoat/lessons/Challenge2Screen.java
index 2b06a26ab..8a6dd3673 100644
--- a/main/project/JavaSource/org/owasp/webgoat/lessons/Challenge2Screen.java
+++ b/main/project/JavaSource/org/owasp/webgoat/lessons/Challenge2Screen.java
@@ -26,6 +26,7 @@ import org.apache.ecs.html.BR;
import org.apache.ecs.html.Center;
import org.apache.ecs.html.H1;
import org.apache.ecs.html.HR;
+import org.apache.ecs.html.IFrame;
import org.apache.ecs.html.Input;
import org.apache.ecs.html.P;
import org.apache.ecs.html.TD;
@@ -383,18 +384,14 @@ public class Challenge2Screen extends SequentialLessonAdapter
{
ElementContainer ec = new ElementContainer();
- // get current text and compare to the new text
- String origpath = s.getContext().getRealPath(WEBGOAT_CHALLENGE + "_" + s.getUserName() + JSP);
- String defaced = getFileText(new BufferedReader(new FileReader(origpath)), false);
- String origText = getFileText(new BufferedReader(new FileReader(s.getContext()
- .getRealPath(WEBGOAT_CHALLENGE_JSP))), false);
-
// show webgoat.jsp text
ec.addElement(new H1().addElement("Original Website Text"));
- ec.addElement(new P().addElement(origText));
+ ec.addElement(new IFrame().setHeight("500").setWidth("100%").setSrc("/WebGoat/" + WEBGOAT_CHALLENGE_JSP));
ec.addElement(new HR());
ec.addElement(new H1().addElement("Defaced Website Text"));
- ec.addElement(new P().addElement(defaced));
+ ec.addElement(new IFrame().setHeight("500").setWidth("100%").setSrc(
+ "/WebGoat/" + WEBGOAT_CHALLENGE + "_"
+ + s.getUserName() + JSP));
ec.addElement(new HR());
return ec;
diff --git a/main/project/JavaSource/org/owasp/webgoat/lessons/HttpBasics.java b/main/project/JavaSource/org/owasp/webgoat/lessons/HttpBasics.java
index f5406f37f..60b9c2c3a 100644
--- a/main/project/JavaSource/org/owasp/webgoat/lessons/HttpBasics.java
+++ b/main/project/JavaSource/org/owasp/webgoat/lessons/HttpBasics.java
@@ -92,6 +92,7 @@ public class HttpBasics extends LessonAdapter
{
List Concept / Topic To Teach: General Goal(s):
"
+ "As regular employee 'Tom', exploit weak access control to use the Delete function from the Staff List page. "
+ "Verify that Tom's profile can be deleted."
- + "The password for a user is always his prename.";
+ + "The password for a user is always their first name.";
}
else if (STAGE2.equals(stage))
{
diff --git a/main/project/JavaSource/org/owasp/webgoat/lessons/SessionFixation.java b/main/project/JavaSource/org/owasp/webgoat/lessons/SessionFixation.java
index 991abfe62..18fcc4680 100644
--- a/main/project/JavaSource/org/owasp/webgoat/lessons/SessionFixation.java
+++ b/main/project/JavaSource/org/owasp/webgoat/lessons/SessionFixation.java
@@ -245,7 +245,7 @@ public class SessionFixation extends SequentialLessonAdapter
+ "During the last week we had a few problems with our database. "
+ "We have received many complaints regarding incorrect account details. "
+ "Please use the following link to verify your account "
- + "data:
"
+ "We are sorry for the any inconvenience and thank you for your cooparation.
"
diff --git a/main/project/JavaSource/org/owasp/webgoat/lessons/SoapRequest.java b/main/project/JavaSource/org/owasp/webgoat/lessons/SoapRequest.java
index f82b3b92e..f284814a2 100644
--- a/main/project/JavaSource/org/owasp/webgoat/lessons/SoapRequest.java
+++ b/main/project/JavaSource/org/owasp/webgoat/lessons/SoapRequest.java
@@ -300,8 +300,8 @@ public class SoapRequest extends SequentialLessonAdapter
{
getLessonTracker(s).setStage(3);
s.setMessage("Stage 2 completed. ");
- // s.setMessage("Now, you'll craft a SOAP envelope for invoking a web service
- // directly.");
+ // s.setMessage(
+ // "Now, you'll craft a SOAP envelope for invoking a web service directly.");
// Redirect user to Stage2 content.
ec.addElement(doStage3(s));
@@ -347,7 +347,7 @@ public class SoapRequest extends SequentialLessonAdapter
// before completing the lesson.
if ((accessFirstName + accessLastName + accessCreditCard + accessLoginCount) >= 2)
{
- /** Reset function access counters * */
+ /** Reset function access counters **/
accessFirstName = accessLastName = accessCreditCard = accessLoginCount = 0;
// SoapRequest.completed = true;
makeSuccess(s);
diff --git a/main/project/JavaSource/org/owasp/webgoat/lessons/SqlNumericInjection.java b/main/project/JavaSource/org/owasp/webgoat/lessons/SqlNumericInjection.java
index 7d5e4bd67..3ddaaed41 100644
--- a/main/project/JavaSource/org/owasp/webgoat/lessons/SqlNumericInjection.java
+++ b/main/project/JavaSource/org/owasp/webgoat/lessons/SqlNumericInjection.java
@@ -316,7 +316,7 @@ public class SqlNumericInjection extends SequentialLessonAdapter
+ "\"SELECT * FROM weather_data WHERE station = \" + station ");
hints.add("Compound SQL statements can be made by joining multiple tests with keywords like AND and OR. "
+ "Try appending a SQL statement that always resolves to true.");
- hints.add("Try to intercept the post request with WebScarab and replace the station " + "with 101 OR 1 = 1");
+ hints.add("Try to intercept the post request with WebScarab and replace the station " + "with [ 101 OR 1 = 1 ].");
return hints;
}
diff --git a/main/project/JavaSource/org/owasp/webgoat/lessons/UncheckedEmail.java b/main/project/JavaSource/org/owasp/webgoat/lessons/UncheckedEmail.java
index 3be3cc432..9264dd482 100644
--- a/main/project/JavaSource/org/owasp/webgoat/lessons/UncheckedEmail.java
+++ b/main/project/JavaSource/org/owasp/webgoat/lessons/UncheckedEmail.java
@@ -131,8 +131,8 @@ public class UncheckedEmail extends LessonAdapter
s.setMessage("The attack worked! Now try to attack another person than the admin.");
}
- // only complete the lesson if they changed the "to" hidden field and they sen a
- // scripttag in the message
+ // only complete the lesson if they changed the "to" hidden field and they send a
+ // script tag in the message
if (to.length() > 0 && !"webgoat.admin@owasp.org".equals(to) && message.contains("
The user should become familiar with the features of WebGoat by manipulating the above
-buttons to view hints and solution. You have to use WebScarab for the first time.
+buttons to view hints, show the HTTP request parameters, the HTTP request cookies, and the Java source code. You may also try using WebScarab for the first time.
\ No newline at end of file
diff --git a/main/project/WebContent/lesson_plans/PasswordStrength.html b/main/project/WebContent/lesson_plans/PasswordStrength.html
index 83900f200..d5025216d 100644
--- a/main/project/WebContent/lesson_plans/PasswordStrength.html
+++ b/main/project/WebContent/lesson_plans/PasswordStrength.html
@@ -3,7 +3,7 @@
The
-application is taking the input from the select box and inserts it at the end of a pre-formed
+application is taking the input from the select box and inserting it at the end of a pre-formed
SQL command.
Compound SQL
diff --git a/main/project/WebContent/lessons/RoleBasedAccessControl/ViewProfile.jsp b/main/project/WebContent/lessons/RoleBasedAccessControl/ViewProfile.jsp
index 896eec8f3..6b5ecab0d 100644
--- a/main/project/WebContent/lessons/RoleBasedAccessControl/ViewProfile.jsp
+++ b/main/project/WebContent/lessons/RoleBasedAccessControl/ViewProfile.jsp
@@ -2,9 +2,9 @@
import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.RoleBasedAccessControl"
errorPage="" %>
<%
- Employee employee = (Employee) session.getAttribute("RoleBasedAccessControl." + RoleBasedAccessControl.EMPLOYEE_ATTRIBUTE_KEY);
WebSession webSession = ((WebSession)session.getAttribute("websession"));
-// int myUserId = getIntSessionAttribute(webSession, "RoleBasedAccessControl." + RoleBasedAccessControl.USER_ID);
+ Employee employee = (Employee) session.getAttribute("RoleBasedAccessControl." + RoleBasedAccessControl.EMPLOYEE_ATTRIBUTE_KEY);
+ //int myUserId = webSession.getUserIdInLesson();
%>
- <%=employee.getFirstName()%>
+ <%=(employee == null ? "unknown" : employee.getFirstName())%>
Last Name:
- <%=employee.getLastName()%>
+ <%=(employee == null ? "unknown" : employee.getLastName())%>
Street:
- <%=employee.getAddress1()%>
+ <%=(employee == null ? "unknown" : employee.getAddress1())%>
City/State:
- <%=employee.getAddress2()%>
+ <%=(employee == null ? "unknown" : employee.getAddress2())%>
Phone:
- <%=employee.getPhoneNumber()%>
+ <%=(employee == null ? "unknown" : employee.getPhoneNumber())%>
Start Date:
- <%=employee.getStartDate()%>
+ <%=(employee == null ? "unknown" : employee.getStartDate())%>
SSN:
- <%=employee.getSsn()%>
+ <%=(employee == null ? "unknown" : employee.getSsn())%>
Salary:
- <%=employee.getSalary()%>
+ <%=(employee == null ? "unknown" : employee.getSalary())%>
Credit Card:
- <%=employee.getCcn()%>
+ <%=(employee == null ? "unknown" : employee.getCcn())%>
Credit Card Limit:
- <%=employee.getCcnLimit()%>
+ <%=(employee == null ? "unknown" : employee.getCcnLimit())%>
Comments:
- <%=employee.getPersonalDescription()%>
+ <%=(employee == null ? "unknown" : employee.getPersonalDescription())%>
@@ -88,11 +88,11 @@
Disc. Dates:
- <%=employee.getDisciplinaryActionDate()%>
+ <%=(employee == null ? "unknown" : employee.getDisciplinaryActionDate())%>
- <%=employee.getDisciplinaryActionNotes()%>
+ <%=(employee == null ? "unknown" : employee.getDisciplinaryActionNotes())%>
@@ -100,7 +100,7 @@
Manager:
@@ -114,7 +114,7 @@
{
%>
<%
@@ -126,7 +126,7 @@
{
%>
<%
@@ -139,7 +139,7 @@
{
%>
<%
diff --git a/main/project/WebContent/main.jsp b/main/project/WebContent/main.jsp
index 55cc9dcfc..451258783 100644
--- a/main/project/WebContent/main.jsp
+++ b/main/project/WebContent/main.jsp
@@ -98,6 +98,7 @@ StringBuffer buildList = new StringBuffer();
<% if (lesson instanceof RandomLessonAdapter) {
RandomLessonAdapter rla = (RandomLessonAdapter) lesson;
String[] stages = rla.getStages();
+ if (stages != null)
for (int i=0; i
- <%=employee.getManager()%>
+ <%=(employee == null ? "unknown" : employee.getManager())%>
<%=(rla.isStageComplete(webSession, stages[i]) ? lessonComplete : "")%>">Stage <%=i+1%>: <%=stages[i] %>
@@ -216,7 +217,17 @@ StringBuffer buildList = new StringBuffer();
Close this Window
-