在线XSS-labs靶场:https://xssaq.com/yx/

靶场搭建

靶场是直接使用docker搭建的

docker pull vulfocus/xss-labs

启动靶场

docker run -p 8005:80 vulfocus/xss-labs

浏览器访问IP+8005

windows搭建

使用phpstudy_pro搭建
下载地址:https://github.com/do0dl3/xss-labs

解压文件放入www文件夹下,开启服务

浏览器访问127.0.0.1/xss-labs

level1


仔细观察看到在url栏中传了一个参数,所以在该参数处进行尝试传入其它参数


发现页面有所变化,在 “欢迎用户” 后有一个显示位能对传入的参数进行输出
构造poc

<script>alert('xss')</script>


源码分析
程序将用户以GET方式提交的参数name赋给$str获取name的值,直接返回前端使用,没有对其进行过滤导致恶意代码可以在前端执行

level2

来到第二关有搜索框,直接使用第一关的poc,没有弹窗,代码原样输出

<script>alert("xss")</script>

右键查看源码发现<>都被过转义了


回到页面F12定位到搜索框,发现是<input>标签可以利用
利用:闭合<input>标签


构造poc:

"><script>alert(xss)</script>


源码分析
程序没有对value属性使用htmlspecialchars() 函数进行处理,只对<h2>处进行过滤处理
知识补充

level3


先输入字符串test进行尝试,传入的参数和搜索框的一样

查看源代码和第二关差不多

使用第二关的poc

"><script>alert("xss")</script>

没有弹窗

查看源代码,发现两处<>都被HTML实体化,可以推测这两处都使用了htmlspecialchars()函数
<input>标签无法闭合,可以绕开标签去使用新标签,<input>标签的一些特殊事件来执行js代码
使用单引号闭合属性value,添加事件执行js

poc

'onfocus=javascript:alert('xss') >

onfocusjavascript中在对象获得焦点时发生的事件,最简单的实例就是网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此点击当前页面的输入框就可以完成弹框了

源代码分析
刚刚的推理正确,这两处都使用了htmlspecialchars()函数

level4


这个和上两关类似,直接丢入poc查看

<script>alert("xss")</script>

查看源代码发现<h2>(标号1)使用了使用了htmlspecialchars()函数处理
标号2处< >被删除

很明显和第三关差不多,使用事件来触发js,唯一不同的是使用双引号闭合
poc

"onfocus=javascript:alert('xss') >

填入poc点击搜索框触发事件

源代码分析
keyword参数的值赋给str变量,然后经过1处理将变量值中包含的<、>符号删除
2处对变量值进行编码处理之后显示在页面之上
最后处将去除特殊符号后的变量值插入到<input>标签的value属性值中

level5

此题和上一关卡变化不大,但不知道服务器端对其是怎么处理的,直接丢入poc查看源代码

<script>alert("xss")</script>

根据上几题第一处很明显使用htmlspecialchars()函数处理过才返回到浏览器显示的
二处可以看到<script>标签被插入了一个_(下划线)符号
可以简单的推测一下服务器在2处使用了正则匹配,匹配到<script>标签插入_符号

<script>标签无法使用,可以使用其他的标签绕过,使用事件进行绕过测试

"onfocus=javascript:alert('xss') >

测试发现没有弹窗,查看源代码onfocus事件也被插入了_(下划线)符号

再次尝试其他的标签:<a>

使用新标签要先闭合<inupt>标签构造poc

"><a href=javascript:alert("xss")>xss</a>

填入poc,点击链接触发弹窗


源代码分析
1标号处GTE入参数给str,分别对on<script>进行了过滤,,过滤之后再见值传给了srt3

xss-labs靶场的更多相关文章

  1. XSS - Labs 靶场笔记(下)

    Less - 11: 1.观察界面和源代码可知,依旧是隐藏表单 2.突破点是 $str11=$_SERVER['HTTP_REFERER']; (本题为HTTP头REFERER注入) 3.因此构造pa ...

  2. XSS - Labs 靶场笔记(上)

    上周在网上看到的一个XSS平台,刷一波<doge Less - 1: 1.进入主界面,由图二可知是GET请求,提交name=test,回显在页面 2.查看源代码可知 没有做任何过滤,显然存在反射 ...

  3. XSS Challenge靶场练习

    实验目的 学习xss的基础知识及利用方式. 实验原理 XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写 ...

  4. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  5. 如何写一个Xss Bot

    如何写一个Xss Bot 现在的ctf比赛里 xss的出题方式比较特殊,一般使用xss bot,所以借鉴大佬经验尝试弄一个xss题目. xss bot 就是代替管理员去完成点击页面的任务,bot需要能 ...

  6. 常见web漏洞整理之进击吧xss!!!

    XSS在线测试环境: http://xss-quiz.int21h.jp/ https://brutelogic.com.br/xss.php 这两个站对xss的理解很有帮助!!! 参考链接: htt ...

  7. Vulnhub之Credit_Card_Scammers靶场渗透

    前言 一次"夺旗"练习,涵盖了许多不同的技巧. 背后的故事:骗子正在利用人们,各种假冒购物网站已经建立起来,但人们发现他们的订单从未到达.我们发现了一个诈骗网站,我们认为该网站正在 ...

  8. PHP反序列化 - Pikachu

    概述 序列化serialize()序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象: class S{ public $test="pikachu"; } $s ...

  9. webug4.0 打靶笔记-02【完结】

    webug4.0打靶笔记-02 3. 延时注入(时间盲注) 3.1 访问靶场 3.2 寻找注入点 貌似一样的注入点: ?id=1' --+ 3.3 判断输出位置 同前两关一样的位置,时间盲注应该不是这 ...

  10. (未完)XSS漏洞实战靶场笔记

    记录下自己写的XSS靶场的write up,也是学习了常见xss漏洞类型的实战场景

随机推荐

  1. 深入理解 python 虚拟机:花里胡哨的魔术方法

    深入理解 python 虚拟机:花里胡哨的魔术方法 在本篇文章当中主要给大家介绍在 cpython 当中一些比较花里胡哨的魔术方法,以帮助我们自己实现比较花哨的功能,当然这其中也包含一些也非常实用的魔 ...

  2. 代码随想录算法训练营Day21 二叉树

    代码随想录算法训练营 代码随想录算法训练营Day21 二叉树| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 题目链接:5 ...

  3. 洛谷 P7579 「RdOI R2」称重(weigh) 题解

    题意: 题目 一道交互题. 有 n 个球,里面有两个假球,假球比普通球的要轻,每次可以询问任意两组球的轻重关系,第一组轻为 < ,第二组轻为 > ,一样重量为 = . 思路: 先考虑在一个 ...

  4. SQLLDR简介 和 Oracle插入大量数据

    SQLLDR简介 一.简介 SQLLOADER是ORACLE的数据加载工具,通常用来将操作系统文件(数据)迁移到ORACLE数据库中.SQLLOADER是大型数据仓库选择使用的加载方法,因为它提供了最 ...

  5. JuiceFS 社区版 v1.1- Beta 发布,新增五个实用功能

    我们很高兴地宣布 JuiceFS v1.1-Beta 版本正式发布啦!这是一个功能丰富的版本,带来了许多实用的新功能和改进.在这个版本中我们新增了以下功能: 目录配额:为目录设置配额限制,控制其大小和 ...

  6. 【python基础】函数-初识函数

    函数是带名字的代码块,用于完成具体的工作,无需反复编写完成该工作的代码.之前我们接触过print函数,数据类型转换中的int函数.str函数,还有列表中的append函数.pop函数.remove函数 ...

  7. Go应用性能优化的8个最佳实践,快速提升资源利用效率!

    作者|Ifedayo Adesiyan 翻译|Seal软件 链接|https://earthly.dev/blog/optimize-golang-for-kubernetes/ 优化服务器负载对于确 ...

  8. 从AWS中学习如何使用AmazonDynamoDB存储卷

    目录 <35. <从 AWS 中学习如何使用 Amazon DynamoDB 存储卷>>:从 AWS 中学习如何使用 Amazon DynamoDB 存储卷 随着云计算技术的迅 ...

  9. React学习时,outlet 路由配置 (prop传参处理,跳转的实现,父子数据共享)

    index.js import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App' ...

  10. you-get的使用

    转载自: 利用Python下载:You-Get的安装及使用方法 - 宁佳兵 - 博客园   宁佳兵 所谓的光辉岁月,并不是后来闪耀的日子,而是无人问津时,对梦想的偏执. 博客园 首页 标签 GitHu ...