0%

DVWA-XSS

简单来说,xss 就是通过 html 注入篡改网页内容,用户访问时就会触发恶意代码从而达到目的

  • 反射型与存储型 xss

    反射:当数据发送到服务器时才会生效,由此只有当诱导用户点击链接时才会生效

    存储:输入的代码会长期存在于服务器端,每当用户访问网站就会触发

    • $Low$

      针对没有任何转义防护的网站,直接提交对应的 xss 语句即可,这里练习一下基本的操作和对模块的应用

      1
      <script> alert("qwq") </script>

      经典的 JS 脚本注入,可以通过 alert 得到相应信息,例如

      1
      alert(document.cookie)

    • $Medium$

      用了常见的 str_replace 来替换 <script>

      可以通过双写或者大小写来轻松绕过

    • $High$

      彻底ban掉了 <script> 标签,但还有别的 $JS$ 事件仍能执行命令,比如用 img

      1
      <img src=# onerror=alert("xss")>
  • $DOM$ 型 xss

    该类型下注入的 xss 不与服务器进行交互,而是通过浏览器前端的 $dom$ 树解析

    • $Low$

      乱改一下网址栏再看下源码得知,有一段 $JS$ 脚本将默认选择的语言又重新写入到界面中

      那么直接在网址栏 default 的地方插入 xss 语句即可

    • $Medium$

      看源码得到 <script> 被屏蔽掉了,那么转而用 img

      上传后发现并没有弹窗,检查一下

      看到被闭合在 <select><option> 中,并没有作为值存在,所以手动闭合它们

      1
      </option></select> <img=1 onerror=alert("xss")>
    • $High$

      用了白名单,仅允许预设的四种语言作为 default ,但值得注意的是判断代码在服务器端,前端并没有判断功能,那么用 # 注释掉插入的 xss 代码,使服务器仅接受白名单的语言,在前端直接与浏览器进行交互