XSS漏洞描述
攻击原理
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览页面时,攻击者插入在页面的Script代码会被解析执行,从而达到恶意攻击的目。
第一关 反射型XSS(get)
进入网站后我们先插入一个script代码尝试一下
<script>alert(111)</script>
在这里尝试发现输入框有字符长度限制,那么我们鼠标右键,检查,打开开发者工具
将这里的20改为更大的数字,这里我改成了100
改完之后接着在输入框进行输入,就可以继续输入了
第二关 反射型XSS(post)
第二关提示这里给了我们一个账号,我们用这个账号先登录
登录进去之后就和第一关一样了,这里我们可以直接进行输入
第三关 存储型XSS
第三关是一个留言板页面,我们可以直接进行输入
第四关 DOM型XSS
第四关进入之后看到只有一个输入框,那么我们先尝试直接输入script代码
发现他弹出了一个链接:what do you see?
那么我们F12进入查看界面,Ctrl+F 弹出搜索框,进行搜索 what do you see
来分析他的代码,发现他用dom将字符串进行了拼接
那么我们给他闭合,构建一个payload效果
<a href='#' onclick="alert(111)">'>what do you see?</a>
#' onclik="alert(111)">
第五关 DOM型XSS-X
这关我们输入111后,发现在上面的url上显示了
我们接着检查源码
发现源码和上一关是一样的
点击链接后又弹出一个链接
#' onclick="alert(111)">
输入后再点击链接弹出
第六关 XSS盲打
这关我们输入后什么都看不到
点击提示,让我们登录后台
我们进入后台进行登录
用前面给的账号 admin 123456登上之后,发现内容被记在后台
那么我们返回直接输入代码
然后登录后台
第七关 XSS之过滤
输入内容,提交之后发现页面有回显输入的内容,url中也有输入的内容,离开本页面再回来,页面就没有这个内容了,说明是反射型GET型XSS
发现他进行了过滤,我们开始尝试绕过过滤
<a herf="#" onclick="alert(111)">
输入代码后点击连接弹出
第八关 XSS之htmlspecialchars
先输入个111试试,理所当然没有弹框,出现了一个链接(箭头部分),根据之前的经验,这里应该是有个<a>
标签
检查源代码
发现不管是<a>
标签内还是href属性内,左右尖括号被编码了,我们尝试其他发现单引号不被编码
#' onclick='alert(1)'
第九关 XSS之href输出
输入个<script>alert(111)</script>
试试,看有没有弹框
检查代码
发现左右尖括号和单引号都被html编码了,这里利用JavaScript协议
javascript:alert(111)
第十关 XSS之js输出
输入<script>alert(111)</script>
试试
检查源代码发现刚刚输入的东西跑到<script>
标签内了,并且没有被编码
那我们就用js语句,先用 '; 闭合当前语句,再用 // 注释掉后半段语句
';alert(111);//