《从0到1:CTFer成长之路》XSS漏洞

00.前言


这篇文章将展示获取该靶机flag的过程,并对其中的通关步骤进行解析。


启动环境

  打开漏洞靶机http://192.168.70.6:9060,查看提示,只需触发alert函数弹窗即可过关:
在这里插入图片描述在这里插入图片描述

01.第一关

  我们首先看到这是get型地址,且username的输入会在网页输出,我们尝试修改数据,将数字与常见的特殊字符一并输入,发现其没有过滤直接输出:

在这里插入图片描述

在这里插入图片描述

  直接尝试最经典的XSS payload:<script>alert(1)</script>,弹窗成功进入下一关:
在这里插入图片描述

02.第二关

  看首页并没发现和LV1有什么不一样,那就先试试<script>alert(1)</script>,然后查看源码信息:

在这里插入图片描述

  可以发现我们输入的的确有进入源码,且多了一个escape函数,百度查看该函数的作用:

在这里插入图片描述

  使用了escape()函数进行过滤,但这个函数放的位置不对,我们可以发现输入的字符串是先进入前面的username这个参数的,再进入escape函数进行过滤,所以我们可以使用</script>进行拼接闭合前面原有的<script>标签 再加其他的语句构造XSS,如</script><img src=1 onerror=alert(1)>;</script><script>alert(123)</script>,当然也可以直接:';alert(123);'

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

03.第三关

  老样子,输入特殊字符查看返回,发现返回正常,查看源码发现单引号被过滤,加了一个反斜杠’\’这其实是一个转义字符:

在这里插入图片描述

  目前不少xss防御机制较为成熟,但是引号转义却不转义转义符的情况,仍然可以进行逃逸并触发反射xss,此处的单引号被转义,然而在单引号前加上转义符,可以导致单引号逃逸,成功闭合,触发反射xss:

在这里插入图片描述

  其实这一关我们不需要使用单引号也可以进行弹窗:</script><script>alert(123)</script>

在这里插入图片描述

  或者尝试使用<img src=1 onerror=alert(123)>,成功弹窗:

在这里插入图片描述

04.第四关

  页面显示10秒后将会重定向到http%3A//192.168.70.6%3A9050/level4。查看源码,跳转页面取决于jumpUrl是否正确:

在这里插入图片描述

  使用jumpUrl=<script>alert(123)</script>,发现存在特殊字符过滤:

在这里插入图片描述

  使用jumpUrl=javascript:alert(123),避免了特殊字符<>成功弹窗:

在这里插入图片描述

05.第五关

  查看源码,和第四关差不多,给参数autosubmit、action赋值即可:autosubmit=123&action=javascript:alert(1)

在这里插入图片描述在这里插入图片描述

06.第六关

  这题比较复杂,问题出在JavaScript框架AngularJS,原因是后端语言flask的jinja2使用不当,存在模板注入。

在这里插入图片描述
在这里插入图片描述

  因为我们的AngularJS版本是1.4.6,使用对应版本的沙箱逃逸的方法构造payload:?username={{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}成功弹窗并过去flag:

在这里插入图片描述
在这里插入图片描述

07.总结

  这几关可以说是由易到难,但也不难吧哈哈,仔细看看找找还是可以过关的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值