欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

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

来源: 作者: 时间:2019-02-24 19:29 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

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

有意思的是,当我们点击星星之后提示我们需要登录才能投票,但这个页面并没有登录按钮。
我们来查看后台源码:
@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 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提交。

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

所以这道题主要还是考对http协议的熟悉,假如就只知道提交方式GET,POST,PUT是做不出来的。
SQL Injection(mitigation)
这道题的意思是我们可以对下面四个主机排序,可以根据hostname,ip,mac,status,description等,对应的山下箭头就可以排序,但需要注意的是,下面的提交框不存在注入(题目也说明了)。最后我们要找到主机“webgoat-prd”的ip地址。

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

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

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

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

可见已经按照ip排序了,我们将true换成false试试:

变成了根据ip排序,所以我们可以将true和false的位置换成逻辑语句,此处存在order by布尔盲注。WebGoat用的是HSQLDB,这个数据库貌似并没有类似mysql的information_schema库,所以表名只能暴力破解,使用逻辑语句:
exists(select * from table_name)
table_name就是需要暴力破解的地方。这道题的表是servers,相比不算难破解。(至少使用字典使用牛津的那本就可以,手动滑稽)
接下来直接构造逻辑语句就好
/WebGoat/SqlInjection/servers?column=(CASE+WHEN+((select+left(ip,1)+from+servers+where+hostname='webgoat-prd')='1')+THEN+id+ELSE+description+END)

[1] [2] [3]  下一页

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

有意思的是,当我们点击星星之后提示我们需要登录才能投票,但这个页面并没有登录按钮。
我们来查看后台源码:
@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 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提交。

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

所以这道题主要还是考对http协议的熟悉,假如就只知道提交方式GET,POST,PUT是做不出来的。
SQL Injection(mitigation)
这道题的意思是我们可以对下面四个主机排序,可以根据hostname,ip,mac,status,description等,对应的山下箭头就可以排序,但需要注意的是,下面的提交框不存在注入(题目也说明了)。最后我们要找到主机“webgoat-prd”的ip地址。
内容来自无奈安全网

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

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

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

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

可见已经按照ip排序了,我们将true换成false试试:

内容来自无奈安全网



变成了根据ip排序,所以我们可以将true和false的位置换成逻辑语句,此处存在order by布尔盲注。WebGoat用的是HSQLDB,这个数据库貌似并没有类似mysql的information_schema库,所以表名只能暴力破解,使用逻辑语句:
exists(select * from table_name)
table_name就是需要暴力破解的地方。这道题的表是servers,相比不算难破解。(至少使用字典使用牛津的那本就可以,手动滑稽)
接下来直接构造逻辑语句就好
/WebGoat/SqlInjection/servers?column=(CASE+WHEN+((select+left(ip,1)+from+servers+where+hostname='webgoat-prd')='1')+THEN+id+ELSE+description+END)
www.wnhack.com

[1] [2] [3]  下一页

本文来自无奈人生安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。