Authentication Flaws
Authentication Bypasses
lesson2
答案:将请求中的参数secQuestion0和secQuestion1分别改名为secQuestion2和secQuestion3即可
本题给的案例中是直接把参数给删掉,但提示中说本题有何案例略有不同。然后可以看到这两个参数名是相似的,可以猜想后端可能校验了参数个数,但对参数名的校验上可能存在问题,所以本题修改参数名即可。
Cross Site Scripting(XSS)
Cross Site Scripting
lesson2
答案:yes
本题让在浏览器中新打开一个标签页,输入并访问本站任意的网址(如本题的网址http://127.0.0.1:8080/WebGoat/start.mvc#lesson/CrossSiteScripting.lesson/1),然后在地址栏输入`javascript:alert(document.cookie);`,如果是复制粘贴的话,浏览器可能会自动删掉前面的`javascript:`,需要手动加上,执行后会弹出本站的cookies。
本题问题是问各标签页的cookies是否相同,由于都是一个站的,那肯定是肯定是相同的,所以答案就是yes。
lesson7
答案:<script>alert('my javascript here')</script>
本题似乎有点问题,直接点Purchase后题目就绿了,但查看响应并没有算作通过。输入<script>alert('my javascript here')</script>可以看到响应中"lessonCompleted" : true。但并没有成功触发xss,原因在lesson8中有详细的说明,继续下一题。
lesson10
答案:start.mvc#test/
本题提示说/WebGoat/start.mvc#lesson/CrossSiteScripting.lesson/5的route是start.mvc#lesson/,然后问test code的route是什么。随便输入一个答案可以看到提示,检查GoatRouter.js。在GoatRouter.js中可以发现:
所以答案就是start.mvc#test/。
lesson11
答案:本题答案是一个随机数
接上一题,在GoatRouter.js可以看到如下函数,该函数会发送一个请求,然后会随机返回一个data,提交这个data就可以通关了。
直接在浏览器控制台中执行webgoat.customjs.phoneHome(),再在Network中查看该请求,会有类似的返回:"output" : "phoneHome Response is 609023750",提交其中的数字即可。
lesson13
答案:本题答案是一个随机数
评论区有一个提示Can you post a comment, calling webgoat.customjs.phoneHome() ?,意思是要在xss的payload中执行这个函数,所以添加一个评论<script>webgoat.customjs.phoneHome()</script>,后续步骤同上一题。
Access Control Flaws
Insecure Direct Object References
lesson2
输入tom/cat,提交即可
lesson3
答案:role,userId
题目问profile中有两个属性没有显示出来,所以点击profile按钮,查看f12中Network中的请求,可以看到如下响应:
所以本题答案就是role,userId。
lesson4
答案:WebGoat/IDOR/profile/2342384,后面的数字是上一题的userId
本题提示中提到RESTful,加上上题的隐藏的userId,可以猜到url应该是在之前profile的url后跟上userId。
lesson5
查看他人profile需要知道他人的ID,这里只能猜,继续往上猜几次就能发现2342388就是另一个用户的ID。
修改他人profile,提示中有说明需要修改HTTP方法和body,而在RESTful中,一般使用PUT修改数据(在lesson6中也有提示),所以构造如下请求(注意需要修改其中的url和Cookie),其中的role和color都需要按照要求修改:
Missing Function Level Access Control
lesson2
答案:Users,Config
本题让寻找隐藏的字段,所以打开f12,可以发现如下节点:
所以答案就是Users,Config。
lesson3
这题让找hash,根据提示上一题的隐藏链接可能有用,直接访问http://172.26.40.161:8001/WebGoat/users将会被误导,而http://172.26.40.161:8001/WebGoat/config则不可访问,这里的坑在于访问users必须要用json格式,所以构造如下请求(需要修改其中的url和Cookie,其中Content-Type必须为application/json):
提交返回值中的userHash即可。
Insecure Communication
Insecure Login
lesson2
答案:CaptainJack,BlackPearl
先打开浏览器f12,点击login查看请求,账号密码就在请求中,输入下面的输入框中即可。
Request Forgeries
Cross-Site Request Forgeries
lesson3
点击提交按钮,拦截请求,修改Referer为其他地址即可得到flag。
lesson4
基本同上,点击Submit review,拦截请求,修改Referer为其他地址即可。
lesson7
本题同样需要修改Referer,并修改Content-Type为text/plain,可构造如下请求(需要修改其中的url和Cookie,其中Content-Type必须为text/plain):
查看返回值可获得flag。
lesson8
不太明白这一题。
新创建一个账户,用户名为csrf-现在的用户名,用这个新用户登录后点击Solved即可。
Vulnerable Components - A9
Vulnerable Components
lesson5
答案:
lesson12
答案:<contact></contact>。
不会做这题,也没搜到答案,随便蒙了一个,虽然算是完成了,但感觉上不对。
Client side
Client side filtering
lesson2
答案:45000。
随便选择一个人查看其信息,服务器返回结果中包含了所有人的信息。
Bypass front-end restrictions
lesson2
答案:修改form表单所有参数的值即可。
lesson3
在f12的console中执行validate=function(){return true},然后修改参数提交。
HTML tampering
lesson2
答案:找到隐藏的name=Total的input输入框,修改总价。