​

​黑盒操作

LOW

一、这是一个选项框内容,发现输入内容会直接改变选项内容,查看代码后发现==js==代码

在这里插入图片描述

// 这是通过字符串拼接创建出页面显示选项
if (document.location.href.indexOf("default=") >= 0) { 
    // 拼接document.location.href.indexOf():获得下标提取具体显示字段
    var lang = document.location.href.substring(document.location.href.indexOf("default=") + 8);  
    document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>");
    document.write("<option value='' disabled='disabled'>----</option>");
}
// 下面是其他选项
  1. 通过URL地址中的default值来拼接页面显示,那测试的payloay直接输入到url中
  2. 存在js操作页面的DOM元素,那就可能存在DOM型xss
  3. 直接输入payload看效果
URL/?default=<script>alert(1)</script>
  • 判断存在xss漏洞
二、判断提交数据是否经过了后端代码的处理
  1. 地址栏中输入内容后页面刷新,网页出现了弹框,且地址栏中信息没有变化
  2. 这里推测是完全没有后端代码处理,表明后端没有任何操作
三、页面未作任何过滤,存在DOM型xss漏洞,且后端为做任何处理

Medium

一、页面代码没有变,直接输入payload
?default=<script>alert(1)</script>
  1. 页面刷新,但无弹框,URL地址变化。
  2. 判断出后端完全过滤了script标签,且判断出了存在了script标签,直接定向选项为==English==
二、尝试其他标签

输入payload

URL/?default=<img src=1 onerror=alert(1)>

在这里插入图片描述

得出:地址栏中的URL没有变化,但网页代码中存在输入值,可是被url编码了

  1. 那就是判断出后端只过滤了script标签
  2. 页面有显示但是被编码了,那就是语句中没有闭合先前标签

重新输入payload

URL/?default="></option></select><img src=1 onerror=alert(1)>
// 先闭合正常的option标签,js代码是以select为块级元素处理的,所以这里闭合他
  • 存在xss漏洞
三、存在DOM型xss漏洞,后端只过滤了script这一个特殊标签

High

一、页面代码无变化,先输入内容在判断
?default=English"></option></select><img src=1 onerror=alert(1)>

得到:页面刷新,地址变化,选项显示English

  1. 页面刷新和地址变化,证明数据提交到后端且过滤了特殊标签,且重定向选项为English
二、后端会过滤,那就不提交数据到后端
  1. #:在URl地址中是为了跳转到指定的位置锚点标识符
?default=English#<img src=1 onerror=alert(1)>

存在xss漏洞

三、后端获取到GET请求后过滤用户输入的书友标签,有无直接指定为Englist,但前端页面存在xss漏洞

Impossilble

一、输入payload
?default=English#<img src=1 onerror=alert(1)>

页面刷新地址无变化,表明后端不处理数据

那就只有前端做防护

二、尝试其他

在这里插入图片描述

查看页面代码,发现存在编码

那就是闭合方式的问题了

=English#'></option></select><img scr=1 onerror=alert(1)>

在这里插入图片描述

页面也存在编码,那就是前端对输入信息进行了特殊编码

三、前端对用户输入的内容做了编码,防止了xss漏洞

#####DVWA – 003

更多推荐