xss.haozi.me靶场详解
一、模块介绍
1.input code
输入的内容
2.server code
服务端代码,告诉我们程序如何处理输入的内容
3.html
通过处理程序(server code)渲染完的代码
4.浏览器框
显示代码执行结果
二、通关详解
此靶场所有题目都是DOM型xss!
1.0x00
没有过滤,直接输入<script>alert(1);</script>即可成功弹窗
2.0x01
此题将<div>换成了<textarea>,而<textarea>是一个多行文本框,在此标签里输入的内容都会变成多行文本框里的数据,所以需要先将<textarea>闭合
在payload前添加一个</textarea>把标签闭合,即可成功执行后面的xss语句
3.0x02
此题输入点在一个input标签的输入框的value属性中,即在一个当行文本框中输入内容
尝试直接输入payload,发现不能执行(因为输入内容在value属性中,需要先闭合<input>标签)
通过观察发现,只需要在payload前加上一个“>即可将input标签闭合
不使用闭合的方法,使用事件(onmouseover,并将鼠标放在文本框上)也可以通关
4.0x03
此题服务器的过滤使用了正则表达式:
//之间的内容是正则表达式本身(匹配到的内容)
g为全局匹配(一般用于在某一字符串中搜索/替换)
[]为匹配其中字符的任意一个字符(如,[abcd],匹配a或b或c或d)
此题server code的含义为匹配"("或")",并将匹配到的内容替换成空,即只要遇到"("或")"就替换成空(无法输入括号)
所以可以使用其他符号进行绕过过滤,如反引号(波浪线键)等
5.0x04
此题依旧是正则表达式,在上一题的基础上多过滤了反引号
于是我们可以使用编码的方式进行绕过,但是只可以在标签属性(如,scr、onmouseover、value等)中使用编码绕过
使用Unicode编码,将()转化成(),并在两个括号中间加上1即可成功弹窗
此题同样也可以使用onmouseover通关,不过要将<body>换成<input>
真实环境下建议使用onload这种稳定触发的事件
6.0x05
依旧是正则表达式+替换,不过是把匹配内容写进了替换里
由代码可知输入点在一个注释里,且服务器将-->替换成表情防止闭合注释符
但是注释符还有另一个写法:--!>,使用此写法闭合即可成功弹窗
7.0x06
先看此题的正则表达式要匹配什么东西
/auto|on.*=|>/ig
i:不区分大小写
|:匹配前面或后面的内容,如匹配ab/cd则要写成(ab|cd),其中括号用来消除歧义
.*:“.”表示匹配任意字符(除换行符),“*”表示前面的字符可以匹配0次/1次/多次(如:匹配ggle、gogle、google、goooooogle的内容,正则表达式只需要写成go*gle即可),而这两个组合在一起的含义是任何字符的任何长度
此正则表达式含义为:不区分大小写匹配auto或on开头的某个词=或“>”,即匹配事件
由代码可知输入点已经在<input>里面了,输入onmouseover可以显示,但是只要加上=就会被匹配到从而替换成下划线
因为“.”匹配的任意字符不包括换行符,那么我们就使用换行符绕过
8.0x07
先看正则表达式要匹配的内容
</?[^>]+>
\:转义符,匹配后面字符本身
?:表示前面的字符可以出现也可以不出现(出现0次或1次)(如,匹配某url,但不知道是http还是https,即可写成https?
标签:me,xss,匹配,正则表达式,标签,haozi,转义,此题,输入 From: https://www.cnblogs.com/vinslow/p/17037322.html