xss实验


xss-labs

level1(url中的参数修改)

1.url中的参数值(反射型),被原封不动的显示在页面上

尝试

  • 对url中的参数值进行修改过后,屏幕会显示相应的url的值。可以在这测试xss

思路

  • 在url中写入测试代码

level2(htmlspecialchars($str)过滤)

2.js的<>过滤

尝试

  • 在页面输入测试语句
  • 查看网页源代码

    由源代码①可知,网页对js的<>进行了过滤。由②可知测试语句被完整的写在value的位置了,并没有被浏览器所执行。

  • 参考文件的后台代码

    标签处使用了过滤函数,所以js代码的<>会被替换掉

思路

代码被写在value中了,考虑使得value中的代码被执行。使用闭合的思想。

方法一

  • 可以构造使value闭合,从而使浏览器执行测试代码

    "><script>alert(1)</script>//>
    " 闭合value
    > 闭合input
    // 注释后面部分

方法二

  • 闭合value,测试鼠标经过输入框

    " onmouseover=alert(1)//
    " 闭合value
    // 

方法三

  • 闭合value,测试鼠标点击输入框
" onclick=alert(1)//

level3(htmlspecialchars($str)过滤)

尝试

  • 后台对

    和input的value都进行了,htmlspecialchars($str)过滤。

思路

  • 考虑input自身的一些特殊属性,构造没有<>的攻击语句

    比如

    onfocus=javascript:alert('1')
    " onmouseover=alert(1)//
    " onclick=alert(1)//

level4(htmlspecialchars($str)过滤+<>过滤)

尝试

  • 使用测试语句,根据反应查看网页源代码

由网页源代码,①使用了htmlspecialchars($str)过滤。②则是把<>给过滤掉了

思路

  • 考虑使用没有<>的代码,参考第三关

  • 查看后台代码

    可见后台是把<>进行了空替换

level5(关键字替换)

尝试

  • 通过script ,不含<>的poc测试,通过网页源代码可以知道,后台对其进行了过滤

9

QQ截图20220814162338

思路

  • 使用伪协议javascript: ,将javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面
"> <a href=javascript:alert(1)/a>//
  • 结果

  • 后台代码的替换规则

level6(关键字替换+伪协议过滤)

尝试

  • 使用常规语句,input属性,伪协议发现都有过滤

QQ截图20220814162338

思路

  • 尝试大小写绕过
"><Script>alert(1)</script>

  • 后台代码

    由后台代码可以知道,后台对特定的字符进行转换(并没有把字符串准换为小写来进行过滤),以及htmlspecialchars($str)过滤。

level7(关键字替换为空)

尝试


文章作者: Hkini
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hkini !
评论
  目录