您的位置:首页 > 编程语言 > Go语言

Webgoat学习笔记1

2016-03-25 22:42 387 查看
注:

使用为webgoat5-2版本,在我的下载有

webscarab为webscarab-selfcontained-20070504-1631.jar,直接在官网下也可以,github上好像是

【AccessControlFlaws】

UsinganAccessControlMatrix(权限控制矩阵)

题目翻译就是:基于角色控制的访问机制,如果设置不得当,呵呵,就会导致没有admin权限的人,访问到admin才知道的东西。。

题目要求:用不是admin的用户,登录【AccountManager】。。

答案就是:用Larry和AccountManager访问。。

BypassaPathBasedAccessControlScheme(绕过一个基于路径的访问控制方案)

题目翻译:基于路径访问,那么我们可以通过路径改变访问到不属于我们可以访问的文件

题目要求:读出tomcat-users.xml文件

答案:使用Webscarab截取包,把要访问的文件名改成“../../../conf/tomcat-users.xml”

LAB:RoleBasedAccessControl(基于角色的访问控制)

state1:要求在Tom的身份下,实现admin才有的删除操作,John就是个admin,所有用户的密码为首个单词。很简单,又没做身份验证,所以只要把deleteprofile时候的表单复制到viewprofile操作,做做修改就可以啦。

1<script>
2functionvalidate(){
3varkeyField=document.getElementById('key');
4varurl='attack?Screen=63&menu=400&from=ajax&key='+encodeURIComponent(keyField.value);
5if(typeofXMLHttpRequest!='undefined'){
6req=newXMLHttpRequest();
7}elseif(window.ActiveXObject){
8req=newActiveXObject('Microsoft.XMLHTTP');
9}
10req.open('GET',url,true);
11req.onreadystatechange=callback;
12req.send(null);
13}
14functioncallback(){
15if(req.readyState==4){
16if(req.status==200){
17varmessage=req.responseText;
18varresult=req.responseXML.getElementsByTagName('reward');
19varmessageDiv=document.getElementById('MessageDiv');
20try{
21			eval(message);
22
23messageDiv.innerHTML='CorrectlicenceKey.'
24}
25catch(err)
26{
27messageDiv.innerHTML='Wronglicensekey.'
28}
29}}}
30</script>
DOMInjection
第4行代码,是提交的url,然后用XMLHTTPRequest对象发包。最后应该是用callback()函数做了验证。再看24行,eval()会执行message的信息,估摸着这里面应该要有激活【Activate!】按钮的语句,所以我们截取response,往里面加一句激活语句,试试看。

最好加在body末尾

<script>document.form.SUBMIT.disabled=false;</script>

然后按钮被激活!

ps:其实吧,你把里面disabled属性去掉更快。。

<inputdisabledvalue='Activate!'name='SUBMIT'type='SUBMIT'>

XMLInjection

AJAX用xml和用户交互,但是又不做检查,这道题就是想我们用100分买2000分3000分的东西,就试着先买20分的咯,发现它有一个参数checkin1001





买第二件,改成了check1002..所以,猜想,买第四第五件,就是check1004check1005咯,一修改,就好了。当然,网上还有的做法是,在输入ID后,修改response:

修改代码,在<root></root>中添加以下代码,修改后保存:
<reward>WebGoatCoreDuoLaptop2000Pts</reward>
<reward>WebGoatHawaiiCruise3000Pts</reward>

这样,选择框里就会多出我们要的几项。

这道题就是告诉我们,一定要做检查啊啊啊啊啊

【JSONInjection】

用便宜的票价买贵的机票。





查看一下发送的包,发现传回去的数据参数如下:

travelFrom=BOS&travelTo=SEA&radio1=on&SUBMIT=Submit&price2Submit=%24300

把它改成radio0试试。。

所以,一定要检查,尽量不要信任用户输入。。

SlientTransactionsAttacks(默默汇钱,哈哈哈哈)

模仿银行的汇款操作,要求跳过客户端的验证,查看源码,发现onClick=‘processData()’,这是一个验证程序,所以我们要跳过它,两个方法:

1在加载这个页面的时候,截取response,把OnClick的值直接改成‘submitData()’,然后页面上填写账号和转账额,提交。

2在浏览器里输入,javascript:submitData(12345567,11111000)好嘛,居然直接调用函数,我服。。

DangerousUseofEval

题目要我们alert出cookie。

Eval可以直接执行里面的语句,运行一遍,发现居然它alert了卡号和三位数字码,我们看这道题的源码

<inputtype='BUTTON'onclick="purchase('lessons/Ajax/eval.jsp');"value='Purchase'>

题目又说了是eval的问题,所以估计是添加语句。修改最后一个输入框,123');alert(document.cookie);('

之所以用单引号,我觉得,是试出来的。。

InsecureClientStorage(不安全的客户存储

事实证明,东西放在客户端是多么。。

stage1:要你,找到一个优惠码(couponcode)





这个优惠码,额,好奇怪的,所以我就查了源码,





然后就在这个函数出加断点,如图:





发现了一个解密后的有效码:PLATINUM





到Stage2:





firebug审查元素,其实也可以在webscarab提交的时候,再修改,这里为了熟悉firebug的使用,所以才用的:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: