前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSS-Labs大闯关第一弹

XSS-Labs大闯关第一弹

作者头像
Andromeda
发布2023-10-21 11:22:01
1860
发布2023-10-21 11:22:01
举报
文章被收录于专栏:Andromeda的专栏

level 0

靶场搭建

下载至phpstudy中的WWW目录。

下载地址:

代码语言:javascript
复制
git clone https://github.com/do0dl3/xss-labs.git

打开phpstudy,启动MySQLApache服务。创建网站,根目录选择下载的文件。之后打开网站即可。

1
1

level 1

没有任何过滤

在源码中找到我们传入的参数,发现插入到了元素<h2>中。直接给我们的name参数赋值一个简单的弹窗脚本,执行成功。这一关没有任何过滤,非常基础的反射型XSS。

2
2

level 2

htmlspecialchars() 插入点在元素的属性

按照第一题的思路,直接传参<script>alert(/xss/)</script>,发现没有跳出弹窗。查看源代码发现我们的传递的参数被HTML实体编码了。

继续检查源代码,发现我们提交的参数赋值给了<input>元素的value,所以这里我们可以通过提前闭合,利用on事件执行一个简单的弹窗。

3
3

传递参数1" onmouseover="alert(/xss/),查看源码发现拼接成功。鼠标移动到该元素上跳出弹窗。

4
4

level 3

类似level 2

与level 2有些许不同,构造参数1' onmouseover='alert(/xss/),查看源码发现拼接成功。同level 2跳出弹窗。

5
5

level 4

无意思 和level 2构造同样的参数即可

6
6

level 5

on事件被过滤,拼接创建新元素,利用JavaScript伪协议

继续使用上一关的参数,发现被过滤了on事件。

7
7

这个元素没办法拼接代码的话,那么通过构造参数新建一个元素来执行代码。构造参数1"><a href="javascript:alert(/xss/)">click!</a><img src=",这里没有过滤掉javascript,查看源代码发现拼接成功,点击click!即可跳出弹窗。

8
8

level 6

大小写绕过

传入1" onmouseover="alert(/xss/),发现on被过滤了。

9
9

继续尝试1"><a href="javascript:alert(/xss/)">click!</a><img src=",发现href也被过滤了。

10
10

尝试大写绕过1"><a HREF="javascript:alert(/xss/)">click!</a><img src=",发现代码拼接成功.点击click!>即可跳出弹窗。

11
11

level 7

双写关键字

尝试参数1" onmouseover="alert(/xss/)on又双叒叕被过滤了。

12
12

尝试创建新元素1"><a href="javascript:alert(/xss/)">click!</a><img src=",也不行。

13
13

尝试双写关键字,拼接成功,跳出弹窗。

14
14

level 8

javascript伪协议+HTML实体编码绕过

随便上传一个链接。

15
15

尝试下javascript伪协议。拼接的时候发现被插入了一个空格。尝试大写绕过,也不行。

16
16

试试HTML实体编码绕过。

代码语言:javascript
复制
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#47;&#120;&#115;&#115;&#47;&#41;

拼接成功,点击弹出窗口。

17
17

level 9

类似level 8

随便传入一串字符,发现不符合格式,需要http://才能成功传入。构造参数javascript:alert(/xss/)//http://,发现和level 8一样在script中间插入了一个空格,直接尝试HTML实体编码绕过,拼接成功,点击后弹出窗口。

18
18

level 10

隐藏表单

检查源代码,发现有隐藏的输入框。同时给这些变量传值。

代码语言:javascript
复制
<form id="search">
    <input name="t_link" value="" type="hidden">
    <input name="t_history" value="" type="hidden">
    <input name="t_sort" value="" type="hidden">
</form>
代码语言:javascript
复制
http://xss-labs/level10.php?keyword=well done!&t_link=a&t_history=b&t_sort=c

只有t_sort变量被赋值了。尝试传参重构这个元素。参数为1" type="" onmouseover="alert(/xss/)

19
19

拼接成功,跳出弹窗。

20
20
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • level 0
  • level 1
  • level 2
  • level 3
  • level 4
  • level 5
  • level 6
  • level 7
  • level 8
  • level 9
  • level 10
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档