这里注意新版的webgoat需要使用jdk17才能启动,而有些博客中说的jdk11是没办法启动,这里困扰了我不少时间,顺便介绍一下如何让多个jdk版本共存,并且方便切换
同时在path中添加下方两个变量
在系统环境变量中添加每种jdk的路径地址,再添加JAVA_HOME 去选择jdk版本,如上图只用修改%JAVA_HOME%的值即可切换jdk版本
上传一个图片文件
根据下方的文件路径名,可以发现Full Name 和 路径中似乎有些关系
尝试修改一下
猜想得到印证,尝试使用一些特殊的方法,例如修改文件名为./,../x
显示过关,这里就是一个文件路径的简单利用
查看文件
发现确实多了一个x文件
这个漏洞可以使上传的webshell绕过目录解析,从而达到利用效果
第三关
修复了../这样的文件名上传
没有成功
猜测可能使用replace("../","")的方式过滤了此符号
尝试使用....//的方式绕过,这样如果猜测成立,即可使....//被过滤为../符号
绕过成功
原理上和sql注入,以及文件上传中的双写绕过方式类似
这里随便输入一个账号和密码,然后开启bp抓包,点击log in
然后数据包中就抓到了关键数据
用户名和密码都在上面,输入后点击提交
顺利过关
先按照题目内容提示,输入tom,cat登录
此页面提示,输入上方未显示的属性
此时使用burpsuite抓包,再将数据包的内容放入重发模块,看服务器回应数据
发现了没有显示的属性role,userId,输入进去,注意大小写
反馈一下信息则表示输入正确,翻译内容为请记住这两个属性
来到下一关
请输入对象引用url查看自己profile
抓包结果中看见post请求头中的参数
尝试输入WebGoat/IDOR/profile/?userId=2342384 等方式输入
最终发现结果为WebGoat/IDOR/profile/2342384
下一关
查看和编辑别人的Profile
先抓包看数据
发现有个GET后面对应的数据进行url编码
对其进行解码
将数据包放入重发器模块
将%7BuserId%7改值为 2342384
发现可以正常响应,因此发到爆破模块
攻击结果
发现2342388返回字长不一样且是正常响应,尝试传参2342388
将其权限role降低,color改为red
构造报文
将上图中的报文进行修改
GET请求方式改为PUT
Content-Type 改为 application/json格式
最后在报文末尾加入json语句
修改成功