Webgoat学习笔记1
2016-03-25 22:42
387 查看
注:
使用为webgoat5-2版本,在我的下载有
webscarab为webscarab-selfcontained-20070504-1631.jar,直接在官网下也可以,github上好像是
题目要求:用不是admin的用户,登录【AccountManager】。。
答案就是:用Larry和AccountManager访问。。
题目要求:读出tomcat-users.xml文件
答案:使用Webscarab截取包,把要访问的文件名改成“../../../conf/tomcat-users.xml”
第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'>
买第二件,改成了check1002..所以,猜想,买第四第五件,就是check1004check1005咯,一修改,就好了。当然,网上还有的做法是,在输入ID后,修改response:
修改代码,在<root></root>中添加以下代码,修改后保存:
<reward>WebGoatCoreDuoLaptop2000Pts</reward>
<reward>WebGoatHawaiiCruise3000Pts</reward>
这样,选择框里就会多出我们要的几项。
这道题就是告诉我们,一定要做检查啊啊啊啊啊
查看一下发送的包,发现传回去的数据参数如下:
travelFrom=BOS&travelTo=SEA&radio1=on&SUBMIT=Submit&price2Submit=%24300
把它改成radio0试试。。
所以,一定要检查,尽量不要信任用户输入。。
1在加载这个页面的时候,截取response,把OnClick的值直接改成‘submitData()’,然后页面上填写账号和转账额,提交。
2在浏览器里输入,javascript:submitData(12345567,11111000)好嘛,居然直接调用函数,我服。。
Eval可以直接执行里面的语句,运行一遍,发现居然它alert了卡号和三位数字码,我们看这道题的源码
题目又说了是eval的问题,所以估计是添加语句。修改最后一个输入框,123');alert(document.cookie);('
之所以用单引号,我觉得,是试出来的。。
stage1:要你,找到一个优惠码(couponcode)
这个优惠码,额,好奇怪的,所以我就查了源码,
然后就在这个函数出加断点,如图:
发现了一个解密后的有效码:PLATINUM
到Stage2:
firebug审查元素,其实也可以在webscarab提交的时候,再修改,这里为了熟悉firebug的使用,所以才用的:
使用为webgoat5-2版本,在
webscarab为
【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的使用,所以才用的:
相关文章推荐
- [django]自定义全局context
- 关于OGR读取多边形-Polygon(GDAL 2.0版本之前)
- django-模型超级总结
- go语言学习心得
- zjnu1726 STOGOVI (lca)
- Django CSRF_TOKEN跨域攻击处理
- POJ 2195 Going Home (最小费用最大流)
- Go语言核心之美 3.4-Struct结构体
- GoDaddy重推CN域名注册服务
- GoDaddy重推CN域名注册服务
- hdu 5645 DZY Loves Balls
- hdu 5646 DZY Loves Partition
- Mastering the game of Go with deep neural networks and tree search 中文版来了
- codeforces_616D. Longest k-Good Segment(尺取法)
- Django-Model中的ForeignKey,ManyToManyField与OneToOneField
- go语言映射map的线程协程安全问题
- Django框架利用ajax实现批量导入数据功能
- 简学LINGO(三)——实例篇
- Django Url编码问题
- Vim - Go