WebGoat 8.0 M21失传几关的答案在这里

作者:网友投稿 时间:2018-07-20 09:40

字号

最近在研究OWASP WebGoat8.0,鲜鲜实验室有一篇文章特别好,从安装到攻略都有(传送)。但其中有几关这位大佬没有做出答案(但我做出来了),当然我在网上找了一些攻略也没有这几关的具体答案,所以把自己做的答案贴出来,给也在研究这个靶场的兄弟们作参考。

最后挑战WithoutAccount

这道题就是最后一关,页面的意思是投票,点击星星来决定投几星。

1.png

有意思的是,当我们点击星星之后提示我们需要登录才能投票,但这个页面并没有登录按钮。

我们来查看后台源码:

@GetMapping(value ="/vote/{stars}", produces = MediaType.APPLICATION_JSON_VALUE)

@ResponseBody

public ResponseEntity<?> vote(@PathVariable(value ="stars") int nrOfStars, HttpServletRequest request) {

//Simple implementation of VERB Based Authentication

String msg = "";

if (request.getMethod().equals("GET")) {

HashMap<String, Object> json = Maps.newHashMap();

json.put("error", true);

json.put("message", "Sorry but you need to login first inorder to vote");

return ResponseEntity.status(200).body(json);

}

Integer allVotesForStar = votes.getOrDefault(nrOfStars, 0);

votes.put(nrOfStars, allVotesForStar + 1);

return ResponseEntity.ok().header("X-Flag", "Thanks forvoting, your flag is: " + Flag.FLAGS.get(8)).build();

}

查看了源码后发现,只要是GET请求都会返回失败。但这个GetMapping就是get提交的,所以我的思路是,使用其他方法提交请求绕过,先将GET改为POST提交。

2.png

失败了。

然后换成PUT,还是失败,之后换成HEAD,发现了flag。(就是这么简单)

所以这道题主要还是考对http协议的熟悉,假如就只知道提交方式GET,POST,PUT是做不出来的。

3.png

所以这道题主要还是考对http协议的熟悉,假如就只知道提交方式GET,POST,PUT是做不出来的。

SQL Injection(mitigation)

这道题的意思是我们可以对下面四个主机排序,可以根据hostname,ip,mac,status,description等,对应的山下箭头就可以排序,但需要注意的是,下面的提交框不存在注入(题目也说明了)。最后我们要找到主机“webgoat-prd”的ip地址。

4.png

没什么好说的,直接抓包查看数据提交方式:

5.png

发现是get提交,对排序的参数直接写在后面了。我们放入repeater进行重放,查看相应包:

6.png

右侧就是排序的数据,目前已经按ip排序好了,我们可以尝试修改参数查看是否能排序:

7.png

可见已经按照id改好了,但id选项并没有在网页上。我们再根据提示简单构造一个逻辑语句:

8.png

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接