首页 > 其他 > 详细

xss-labs全关教程

时间:2021-04-25 00:02:27      阅读:27      评论:0      收藏:0      [点我收藏+]

0x01 Level 1

查看源码,可以看到接收了name参数,并直接嵌入到HTML页面中了

技术分享图片

没有任何过滤,而且直接会当作代码执行。

技术分享图片

0x02 Level 2

先传入<script>alert(1)</script>观察一下,发现输入的内容被放在了value的值中,被当作值时是不会执行代码的,所以我们要闭合前面的标签。

技术分享图片

用">闭合<input>标签,然后开始一条新的标签语句。

技术分享图片

0x03 Level 3

首先查看HTML代码闭合前面的标签再写入<script>标签,发现不成功,看起来闭合无效,还是被当作值来解析的。

技术分享图片

这是由于源代码中使用了htmlspecialchars()函数对特殊字符进行了HTML实体转义,所以无法发挥字符原来的作用。

技术分享图片

既然不能使用<、>这类字符,那么就使用标签的on事件,构造

1‘ onfocus=‘alert(1)     //通过输入的HTML代码变化,得知这里要使用单引号闭合,执行后点击输入框就会产生弹窗

技术分享图片

0x04 Level 4

使用上题的payload,不过这题是使用双引号"闭合

技术分享图片

0x05 Level 5

使用第四关的payload进行测试,发现on被转义了

技术分享图片

使用">闭合前面的标签,再构造<script>标签,发现script也被转义了,不过好消息是">闭合成功了,可以使用其他标签进行尝试。

技术分享图片

传入:"><a href="javascript:alert(1)">click</a>

技术分享图片

点击click出现弹窗

技术分享图片

0x06 Level 6

使用上一关的payload进行测试,发现对href进行了转义,经过测试发现对on和script都进行了转义。

技术分享图片

查看源代码发现它匹配前没有进行大小写统一,只能匹配小写的进行转义

技术分享图片

因此,大小写混淆绕过

"><body Onload=alert(1)>

技术分享图片

0x07 Level 7

使用"><script>alert(1)</script>进行测试,发现script都变成空

技术分享图片

尝试双写绕过

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

技术分享图片

0x08 Level 8

先测试一下,发现输入的内容被传到了两个地方,并且script被转义了

 技术分享图片

查看源码发现基本上都被过滤了

 技术分享图片
尝试HTML编码绕过

技术分享图片

因为参数的值直接被传入到了href之中,所以可以使用javascript伪协议,构造payload:

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(1)  //即javascript:alert(1)

点击友情链接,出现弹窗

技术分享图片

0x09 Level 9

 通过源码发现比上题多了一个条件,就是对输入的内容进行校验,必须含有http://,否则判定“您的链接不合法?有没有!”

技术分享图片

在alert()中加入http://

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(1http://)

 技术分享图片

0x10 Level 10

查看HTML代码,看到三个<input>标签的类型是隐藏类型

技术分享图片

测试一下哪些标签是可以传值的

?keyword=well%20done!&t_link="type="text&t_hidden="type="text&t_sort="type="text

 可以看到名为t_sort的输入标签的类型变成了text型,证明是可以传值的

技术分享图片 

可以看源码验证一下

技术分享图片

构造payload:

?keyword=1&t_sort=" autofocus onfocus="alert(1)

技术分享图片

0x11 Level 11

查看HTML代码,发现有四个隐藏标签

技术分享图片 

使用之前的方法测试,发现t_sort参数还是能传入值的

&t_link="type="text&t_hidden="type="text&t_sort="type="text&t_ref="type="text

技术分享图片

查看源代码,看到$_SERVER[‘HTTP_REFERER‘]字段,HTTP_REFERER是用来获取请求中的Referer字段。

技术分享图片

传入Referer值进行测试

" onfocus="alert(1)" type="text

技术分享图片

可以看到Referer的值被传入了t_ref的标签中,弹窗成功

技术分享图片

0x12 Level 12

 查看HTML代码,第四个标签中的value值一看就是User Agent的内容

技术分享图片

直接构造payload:

user-agent" onfocus="alert(1)" type="text

技术分享图片 

弹出窗口

技术分享图片

0x13 Level 13

查看HTML代码,看到t_cook结合前几关会不会想到cookie

 技术分享图片

 传入Cookie值进行测试,发现Cookie并没有被传入HTML标签中

技术分享图片

使用burpsuite抓个初始包看看,发现Cookie有一个键名user,忘记了必须给键名赋值才行

技术分享图片

更改数据包的Cookie值后,Forward放包

技术分享图片

 

Cookie值被传到了HTML标签中,并且弹出了窗口

技术分享图片

0x14 Level 14

 这题是关于Exif的,Exif叫做可交换图像格式,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。

这题比较冷门,暂时不想做,有兴趣的自行了解。

 

0x15 Level 15

 查看HTML源码发现有一个ngInclude。

通过查询发现ng-include 指令用于包含外部的 HTML 文件;

包含的内容将作为指定元素的子节点;

ng-include属性的值可以是一个表达式,返回一个文件名;

默认情况下,包含的文件需要包含在同一个域名下。

技术分享图片

 构造payload:

?src=‘level1.php?name=<a href="javascript:alert(1)">

技术分享图片

0x16 Level 16

使用<script>标签进行测试,发现script被替换成了空字节

技术分享图片 

查看源码,可以看到代码对空格进行了实体转义

技术分享图片

使用%0a代替空格,构造payload:

<body%0aonload=alert(1)>
// 绕过空格的方法还有很多,比如%0b,%0c,%0d,%09等等

 技术分享图片

0x17 Level 17

查看HTML源码

技术分享图片 

看起来像参数拼接,构造payload:

arg01=%20onfocus&arg02=alert(1)

技术分享图片

0x18 Level 18

 和上题一样的方法

arg01=%20onfocus&arg02=alert(1)

技术分享图片

0x19 Level 19

 我的谷歌和火狐都不支持,不做了

放个答案

version&arg02=<a href=‘javascript:alert(/xss/)‘>xss</a>

0x20 Level 20

看到AngularJS想到了它存在模板注入

技术分享图片

测试了一下没成功

技术分享图片

贴上别人的payload:

arg01=id&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(1)//%26width%26height

暂时不懂,等会了再补吧,如果想知道的话自行去了解吧!

 

xss-labs全关教程

原文:https://www.cnblogs.com/hongchen-/p/14698058.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!