XSS挑战之旅(1-9)
文章目录
- 环境搭建
- 第一关
- 第二关
- 第三关
- 第四关
- 第五关
- 第六关
- 第七关
- 第八关
- 第九关
环境搭建
XSSlab的搭建很简单,下载好压缩包,解压到phpstudy的WWW目录下即可访问。
源码下载(t8t7)
如果不想自己搭建的话,网上有很多搭建好的可以直接测试,比如:
https://xss.angelo.org.cn
前几关还是比较水的,直接把做题过程记录下来好了。。。
第一关
如图所示,第一关展示的是我们可以通过url中的?name
参数,向网站提交数据,然后返回到页面上。
那么直接试一下把name
的值提交成弹框。
level1.php?name=<script>alert(1)</script>
成功通关!!!
第二关
第二关是可以在输入框中输入一个数据提交给服务器,然后提交的数据是会被显示到页面上的。
此时再使用第一关的payload
已经是不行了。看一下源码:
在这里,提交的scirpt被当作页面的内容和value
的值处理了,因此没有形成html结构被浏览器执行。
这里有两种通关思路:
尝试一下闭合
value
,然后构造一个script
标签进去。
在输入框中输入以下代码:"><script>alert(1)</script><"
这样,原本的页面结构就会变成
<input name=keyword value=""><script>alert(1)</script><"">
从而再浏览器加载的时候执行弹窗。
也可构造一个点击事件:
" οnclick="alert(1)
这样页面结构同样会改动
<input name=keyword value="" onclick="alert(1)">
依旧可以实现弹框。
第三关
先输入一个<script>alert(1)</script>
看看效果,
通过源码可以看到,输入的<
被html实体代替了,因此不会被当作页面结构处理。但是可以通过闭合的方式构造点击事件。
payload:
' οnclick='alert(1)
第四关
第四关是过滤掉了尖括号,无法构造新的标签。但是依然可以原本的标签中添加onclick
属性。
" οnclick="alert(1)
第五关
上来就是一个" onclick="alert(1)
输进去,看看效果,发现没有弹框,看源码!!
这里的onclick
被改成了o_nclick
。。。。
那么网站可能是会自动识别onclick
这个字眼;输入"><script>alert(1)</script><"
时,结果是script
被改为了scr_ipt
。
遇到这种检测机制,首先想到的就是大小写绕过,试一了一下,发现不可以。
既然无法新增script
标签和为已有标签增添事件。那么可以尝试一下html的其他标签–a标签。
"> <a href=javascript:alert(1)><"
将以上内容输入以后,会得到下图效果
点一下就会弹框通关。
第六关
这一关和之前的第五关一样,会识别onclick
,href
等关键字,然后进行改写。
但是这一关可以使用大小写混写绕过。
" OnClick="alert(1)
或者添加一个a标签(仍需要混写href绕过检测)
"> <a hRef=javascript:alert(1)>
第七关
第七关会对一些关键字进行识别,然后删除,比如<a href>
会被改成<a>
。
对于这种防御机制,常用的方法就是双写绕过。
比如网站会识别script
,我们就将其构造成scscriptript
提交,通过网站的删除后,就会变成script
;从而达到注入效果。
这一关会删除on
,那么我们用如下方法绕过:
" oonnclick="alert(1)
或者双写a标签中的href
通关
"><a hrhrefef=javascripscriptt:alert(1)>
或者双写构造新的script
通关。
"><scscriptript>alert(1)</scriscriptpt>
第八关
输入" onclick="alert(1)
测试并查看源代码。
可以看到,这里的引号被实体代替了。因此无法使用引号构造闭合,但是网页提供了a标签,并且输入的内容会被赋值给a标签的href属性,那么我们可以在href中插入javascript:alert(1)
实现弹框。
直接输入javascript:alert(1)
发现script
会被识别改写,并且大小写绕过也不行。
那么可以使用单词中间掺杂空白字符的方法,妨碍后端识别指定单词。
符号 | URL编码 |
---|---|
制表 | %09 |
换行 | %0a |
退格 | %08 |
注:掺杂以上url编码的payload要提交到浏览器的地址栏才能生效。
level8.php?keyword=javascr%09ipt%3Aalert(1)&submit=添加友情链接
还有一种方法可以使用提交框进行注入:	
把	
插入到关键字之中,如下:
javascr	ipt:alert(1)
发现网上还有一种解决方案:
利用HTML实体编号进行绕过。
可以将javascript:alert(1)
编码成
javascript:alert(1)
这样后端php不会对其进行改写,但是用户浏览器会将这些编码进行翻译,从而转换为javascript:alert(1)
弹框。
这里是大佬写的函数(本人稍作修改):
def unicodeHtml(orgCode):fin = ';'.join('&#{}'.format(ord(x)) for x in orgCode)return fin
第九关
这一关和地八关的防护机制基本相同,思路同样是在a标签的href中进行注入。但是,此处对于href
又添加了一个检测机制。
我们还拿上一关的javascr	ipt:alert(1)
检测发现,页面会提示我们输入的链接不合法。
这是因为后台会检测是否有http://
字段,但是如果把http://
和javascr	ipt:alert(1)
直接构造在一起,弹框就无效了。因此需要把http://
注释掉,这样后台依然能够检测到http://
而又不会影响javascr	ipt:alert(1)
的弹框。
javascr	ipt:alert(1) // http://
XSS挑战之旅(1-9)相关推荐
- XSS学习-XSS挑战之旅(二)
前言:之前打XSS平台时,打到了第11关就没有继续了,现在有空了就继续打咯,再增加点关于XSS的知识. 第十一关 这关坑我好长时间,看了好多博客直接给说修改Referer,给截图中都有自带的Refer ...
- Docker下搭建XSS挑战之旅靶场
我是在centos7下使用docker搭建xss挑战之旅靶场 一.先安装下docker容器 1.安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是device ...
- XSS挑战之旅---游戏通关攻略
最近发现一个有趣的XSS闯关小游戏,游戏的作者是先知社区的大佬Mramydnei,喜欢XSS的大家可以一起来学习交流. 现在我把自己在前面的十八关里面的闯关过程记录一下,大神绕行,我是菜鸟,大家可以一 ...
- 从xss挑战之旅来重读xss(一)
在开始这篇文章之前,先简单聊几句: xss很多时候是鸡肋,比如说self-xss 很多厂商都会注明拒收反射xss,如58src 遇到请证明危害性的说法就走,人家的潜台词也是拒收反射xss 遇到收反射x ...
- ubuntu使用docker搭建xss挑战之旅环境
ubuntu使用docker搭建xss挑战之旅环境 (1)启动docker docker systemctl start docker (2)下载docker-compose部署容器 git clon ...
- XSS平台 XSS挑战之旅 解题记录 writeup
XSS平台 XSS挑战之旅 解题记录 writeup level1 level2 level3 level4 level5 level6 level7 level8 level9 level10 le ...
- 使用docker搭建sqli-lab环境以及upload-labs环境 xss挑战之旅环境 搭建vulhub环境
sqli-lab环境 1)查找sqli-lab环境 docker search sqli-labs 2)拉取镜像 docker pull acgpiano/sqli-labs 3) docker ru ...
- xss挑战之旅11-19关
文章目录 前言 第11关:referer 第12关:User-Agent 第13关:cookie 第14关:exif xss 第15关:ng-include 第16关 第17关 第18关 第19关:f ...
- xss挑战之旅level1-level4,操作步骤配截图
xss挑战之旅level1-level4,操作步骤配截图. 查看源代码发现弹窗直接属于语句令其弹窗 (2)提前闭合 (3)与第二题一样value提前闭合 (4)与第二题一样
- test.ctf8(XSS挑战之旅)解题记录
xss平台网址:test.ctf8.com 过关条件:只有能够跳出完成得不错得提示框,即为过关 level1 第一关没啥好说得,入门题 payload <script>alert('abc ...
最新文章
- 使用 Python 的图像隐写术
- IntelliJ IDEA设置默认换行符
- 批量打印pdf并合并_CAD批量打印攻略
- [vue] 动态给vue的data添加一个新的属性时会发生什么?怎样解决?
- 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践
- javascript -- 判断是否为某个数据类型
- WCF BasicHttpBinding 安全解析(3)默认安全设置(IIS宿主)
- python用来正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei']错误
- mfc切换office样式_VS2015下使用MFC操作Office(Word)
- 九爷带你玩转 php单元测试
- 如何快速向oracle插入大量数据,以及注意事项
- sql求和出现null时赋值为0
- SPSS大学生毕业生就业问题分析
- mac电脑开机是出现安全启动
- 使用php制作导航栏,如何制作简单导航栏
- 使用git进行版本控制
- matlab中rand(‘seed‘,任意符号)是干什么的?
- 《那些年啊,那些事——一个程序员的奋斗史》——103
- Android7.0 Phone应用源码分析(三) phone拒接流程分析
- 浅谈【漏洞复现】泛微ecology OA系统某接口存在数据库配置信息泄露漏洞