xss靶场练习(一)之xss.haozi.me

目录

前言

0x00

0x01

0x02

0x03

0x04

0x05

0x06

0x07

0x08

0x09

0x0A

0x0B

0x0C

0x0D

0x0E

0x0F

0x10

0x11

0x12


 

前言

xss实战第一部曲,  实战的靶场是部署在github上的, 所以可能有些延迟(你懂的), 然后给出地址:

https://xss.haozi.me/

玩法很简单,  进行xss注入直至alert(1)成功。

fight!

0x00

首先看看布局:

xss靶场练习(一)之xss.haozi.me_第1张图片

看到源码什么防护都没有,  直接抛一个常规payload过了(过马路一般):

xss靶场练习(一)之xss.haozi.me_第2张图片

 

0x01

看到注入点是在标签中,  所以用上一题的方法是不会被解析的, 故需要去构造标签, 闭合, 就可以注入了:

	  

由于src是空, 所以肯定会报错, 故通过错误调用事件成功注入xss:

xss靶场练习(一)之xss.haozi.me_第4张图片

 

0x02

这题的注入点是把值转化为字符串, 然后显示在输入框内,  这样前两题的标签闭合注入也就失效了

xss靶场练习(一)之xss.haozi.me_第5张图片

提到闭合,  那么就好办了,  我们可以借鉴sql注入的方法,  将前面的双引号闭合, 然后注入新的标签:

" >  

xss靶场练习(一)之xss.haozi.me_第6张图片

同样, 利用error也可以, 方法有很多,  但思路都一样

 

0x03

发现括号, 方括号都被过滤了:

xss靶场练习(一)之xss.haozi.me_第7张图片

但是可以用 `` 来代替:

xss靶场练习(一)之xss.haozi.me_第8张图片

 

0x04

这题把括号、正括号和引号都过滤了:

xss靶场练习(一)之xss.haozi.me_第9张图片

可以考虑用html编码来绕过,  对编码不熟悉的可参考:     一次对浏览器解析和XSS的深度探究

将(1)进行html编码:

xss靶场练习(一)之xss.haozi.me_第10张图片

xss靶场练习(一)之xss.haozi.me_第11张图片

 

0x05

此题的注入点处于注释符之间,  而注释符的后半部被无情的替换为一个, 从而防止了注释被闭合:

xss靶场练习(一)之xss.haozi.me_第12张图片

这题涉及的知识比较牛,  就是注释方式有两种:

  •  
  •  

所以就可以用第二种方法:

--!>   注释掉'):


alert(1);
-->

xss靶场练习(一)之xss.haozi.me_第39张图片

 

0x0E

这题的正则表达式匹配情况:

xss靶场练习(一)之xss.haozi.me_第40张图片

也就是将尖括号后面追加一个下划线, 并且将所有字符大写:

比如:       变为:   <_A

这几乎过滤了所有标签,  包括

xss靶场练习(一)之xss.haozi.me_第42张图片

尝试了一下在script中间html编码,  发现并不能被html解码,  因为它不在html标签中:

xss靶场练习(一)之xss.haozi.me_第43张图片

 

0x0F

这题将一些常用的注入字符进行了html编码处理:

xss靶场练习(一)之xss.haozi.me_第44张图片

但是, 它忽略了一点,  由于编码后处于html标签中, 所以当解析代码的时候, 被过滤编码的字符仍然会被还原来执行,  所以可以说, 被过滤的字符可以用

发现input值处于单引号和括号中间, 

xss靶场练习(一)之xss.haozi.me_第45张图片

注入使其闭合,  在注释掉后面的内容即可:

'); alert(1); //

xss靶场练习(一)之xss.haozi.me_第46张图片

或者也可闭合后面的单引号:

'); alert('1

xss靶场练习(一)之xss.haozi.me_第47张图片

 

0x10

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

''; alert(1);

xss靶场练习(一)之xss.haozi.me_第48张图片

 

0x11

发现所有一些字符被转义了,  就连换行符等也被转义了:

xss靶场练习(一)之xss.haozi.me_第49张图片

但是发现竟然还可以用....原因是: 

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

"); alert(1); //

xss靶场练习(一)之xss.haozi.me_第50张图片

或者:

"); alert("1

xss靶场练习(一)之xss.haozi.me_第51张图片

 

0x12

这题将双引号转义了, 就不能好好闭合了:

xss靶场练习(一)之xss.haozi.me_第52张图片

但是, 换个思路, 它并没有将转义符转义,  那么我们可以将转义符转义:

\"); alert(1); //

xss靶场练习(一)之xss.haozi.me_第53张图片

补充一个的答案(github上看大佬的答案):

通过闭合前面的script标签,  内嵌一个script标签即可:

 
                    
                    

你可能感兴趣的:(XSS)