xss靶场

0x00前言

    无聊耍一耍游戏

0x01闯关

## Level1

 

比较简单,第一关随便插一插就好。

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

 

##Level2

 

首先了解一下 htmlspecialchars( )函数。

 

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

同样的提交第一关的payload: <script>alert(1)</script>

查看第一关的html源码

 

可以看到成功的将<script>嵌入了html里,而再第二关,加入了这个htmlspecialchars()函数过后,我们查看第二关的html源码

 

可以看到<>符号被实体化了,这个函数对xss攻击有防护作用。

但是第二关的xss在另一个点

 

简单的对整个语句进行闭合就行了。

 

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

 

 

##Level3

 

 

与第二关的区别就在于,这关把两个可控点都进行了实体化处理。这里就利用了htmlspecialchars()的一个特点,当htmlspecialchars没有设置第二个参数时,默认不转义单引号

所以这里只需要闭合单引号,引入事件即可。

Payload1’ onclick=’window.alert(1)

记得完了过后要去点一下,才会弹框

 

##level4:

 

看源码做题还是挺简单的,这里过滤了 <>,但是str3没有实体化,直接用事件

Payload: “ onclick=”window.alert(1)

 

##level5

 

和第四关不同的是,这里的$str3过滤了<scripton,这样不能用<script>和一些事件,但是这里又没有过滤<>,所以可以重新构造标签<a href=”javascript”>

 

Payload: “><a href=javascript:alert(1);>test</a>

 

##level6

 

虽然过滤了很多,但是可以大写绕过。。

Payload: “><SCRIPT>alert(1)</SCRIPT>

 

##level7

 

把这些字符过滤为空。。双写绕过就好

Payload : "><scscriptript>alert(1)</scscriptript>

 

##level 8

 

 

过滤了很多,可以看到 href 里面放了可控变量,但是这里script也被过滤了,看了wp,编码绕过,用的是 htmlencode 编码,这个burp 可以直接编码

Payload : javascri&#x0070;t:alert() 

 

## level9

 

 

和第八关的区别就是这里要链接里面必须包含 http:// ,用注释绕过,html里也有注释哦

 

Payload:  javascri&#x0070;t:alert() /*http:// */

 

##Level10

 

 这关如果是黑盒测试的话,都不知道怎么去找到这个t_sort参数,估计是因为源码中有

 

然后尝试去get 尝试这几个参数

 

这里当我们 输入  “onclick=”window.alert(1),是可以成功插入html的,但是却没有地方点击触发

 

只要我们在后面添加一个 type = text 这样覆盖了后面个hidden,然后就有一块text区域让我们触发

 

最终payload:   t_sort=“onclick=”window.alert(1)type=”text

 

然后点击就行

 

##level 11

 

 

referer放入标签中,用事件就行差不多的。

Payload: “onclick=”window.alert(1)” type=”text

 

然后点击触发

 

 

##level 12

 

也是差不多的,换汤没换药,改一下ua就行了

Payload:

 

然后也是同样去点击一下框框就行了

 

##level13

 

添加一下cookie里的user就好

Payload:

 

 

#level14

 

我曹这是什么东西??没见过。很骚的操作,等下整理。

 

##level15

 不求会,,后面整理

##level16

 

过滤了 script,过滤了空格和‘/’这两个连接符,但是还可以用%0a或者%0d绕过,script的话添加标签,用事件绕过      //     /”也是连接符

添加新标签和编码绕过:

Payload: <img%0asrc=1%0aonerror=alert(1)>

 

##level17

 

 

这道题留了几个疑问。

这里两个参数都放在里面的,

 

但是这里 src=后并没有引号,所以我们不需要输入引号,直接空格带进去就可以嵌入事件造成xss

这里传入

arg01=a%20onclick=window.alert(1)%20b&arg02=b

 

成功闭合,但是这里不知道为啥点击了过后不会弹窗,后来百度才知道,onclick不持支 <embed> 标签

这里用 onmousedown=

 

支持onmousedown 事件的 HTML 标签:

onmousedown 属性适用于所有 HTMl 元素,除了: <base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>, <script>, <style>, <title>.

 

Payload:

arg01=a%20onmousedown=window.alert(1)%20b&arg02=b

 

##level18

 

 

17一样

 

##level19

 

 

输入arg01=a&arg02=b

 

可以看到,现在有双引号了,

 这道题思路好像我一点都没了解过,后面整理,因为我已经迫不及待的去挖两个了。

0x02总结

参考了这个师傅的总结挺不错的:https://blog.csdn.net/yukinorong/article/details/99824352

1)根据查看html来看怎样去拼接。

2) 被实体化了过后可以尝试一下单引号

3)更好用的标签:<img src=x onerror=alert(1)><a href=javascript:alert(1)>111</a>

4)更好用的参数:onmouseover=alert(1)

5)注释 /**/ 和 //  拼接有 空格和 / 但是有时候也可用 %0d%0a

6)关键字过滤问题:

  1. 大小写绕过(html不区分大小写),
  2. 双写绕过(只删除一次关键字的过滤)
  3. html字符编码转码绕过(特殊符号,关键字字母),
  4. 回车空格替换

 

原文地址:https://www.cnblogs.com/tlbjiayou/p/12891778.html