首页 > 其他分享 >xss.haozi.me靶场通关详解

xss.haozi.me靶场通关详解

时间:2023-01-09 16:13:46浏览次数:41  
标签:me xss 匹配 正则表达式 标签 haozi 转义 此题 输入

xss.haozi.me靶场详解

一、模块介绍

1

1.input code

输入的内容

2.server code

服务端代码,告诉我们程序如何处理输入的内容

3.html

通过处理程序(server code)渲染完的代码

4.浏览器框

显示代码执行结果

二、通关详解

此靶场所有题目都是DOM型xss!

1.0x00

没有过滤,直接输入<script>alert(1);</script>即可成功弹窗

2

2.0x01

此题将<div>换成了<textarea>,而<textarea>是一个多行文本框,在此标签里输入的内容都会变成多行文本框里的数据,所以需要先将<textarea>闭合

在payload前添加一个</textarea>把标签闭合,即可成功执行后面的xss语句

3

3.0x02

此题输入点在一个input标签的输入框的value属性中,即在一个当行文本框中输入内容

尝试直接输入payload,发现不能执行(因为输入内容在value属性中,需要先闭合<input>标签)

4

通过观察发现,只需要在payload前加上一个“>即可将input标签闭合

5

不使用闭合的方法,使用事件(onmouseover,并将鼠标放在文本框上)也可以通关

6

4.0x03

此题服务器的过滤使用了正则表达式:

//之间的内容是正则表达式本身(匹配到的内容)

g为全局匹配(一般用于在某一字符串中搜索/替换)

[]为匹配其中字符的任意一个字符(如,[abcd],匹配a或b或c或d)

此题server code的含义为匹配"("或")",并将匹配到的内容替换成空,即只要遇到"("或")"就替换成空(无法输入括号)

7

所以可以使用其他符号进行绕过过滤,如反引号(波浪线键)等

8

5.0x04

此题依旧是正则表达式,在上一题的基础上多过滤了反引号

于是我们可以使用编码的方式进行绕过,但是只可以在标签属性(如,scr、onmouseover、value等)中使用编码绕过

使用Unicode编码,将()转化成(),并在两个括号中间加上1即可成功弹窗

9

此题同样也可以使用onmouseover通关,不过要将<body>换成<input>

10

真实环境下建议使用onload这种稳定触发的事件

6.0x05

依旧是正则表达式+替换,不过是把匹配内容写进了替换里

由代码可知输入点在一个注释里,且服务器将-->替换成表情防止闭合注释符

11

但是注释符还有另一个写法:--!>,使用此写法闭合即可成功弹窗

12

7.0x06

先看此题的正则表达式要匹配什么东西

/auto|on.*=|>/ig

i:不区分大小写

|:匹配前面或后面的内容,如匹配ab/cd则要写成(ab|cd),其中括号用来消除歧义

.*:“.”表示匹配任意字符(除换行符),“*”表示前面的字符可以匹配0次/1次/多次(如:匹配ggle、gogle、google、goooooogle的内容,正则表达式只需要写成go*gle即可),而这两个组合在一起的含义是任何字符的任何长度

此正则表达式含义为:不区分大小写匹配auto或on开头的某个词=或“>”,即匹配事件

由代码可知输入点已经在<input>里面了,输入onmouseover可以显示,但是只要加上=就会被匹配到从而替换成下划线

13

14

因为“.”匹配的任意字符不包括换行符,那么我们就使用换行符绕过

15

8.0x07

先看正则表达式要匹配的内容

</?[^>]+>

\:转义符,匹配后面字符本身

?:表示前面的字符可以出现也可以不出现(出现0次或1次)(如,匹配某url,但不知道是http还是https,即可写成https?

标签:me,xss,匹配,正则表达式,标签,haozi,转义,此题,输入
From: https://www.cnblogs.com/vinslow/p/17037322.html

相关文章