1、四种基本的形式
(1)script内部
<script>alert('xss')</script>
(2)script引入外部js文件
<script src='check.js'></script>
<script src=https://www.freebuf.com/freebuf/2.1.0.cd254c064b386bee9d41.js></script>
- 需要注意如果当前页面是https,则只能引入https的js文件
- 某些站点对跨域请求js做了禁止,报405,测试freebuf的脚本可以跨域请求
- 大多数站点可能会包含baidu,jquery,google等站点的脚本,所以这些站点的脚本一般不能作为xss测试
(3)javascript伪协议
<a href="javascript:alert(123)">点击触发</a>
<iframe src="javascript:alert(123)"></iframe>加载触发
<form onsubmit="javascript:alert(123)"></form>
- 事件都可以写作javascript伪协议的形式,但意义不大
(4)html事件
<button onclick=alert(123)>点击触发</button>
<img src=1 one rror=alert(123)>
2、两种jsonp形式
(1)script标签
<script src="https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script>
- script标签可以不指向js文件,而是指向一个接口,携带参数。其响应内容为脚本代码,和引入外部js是一致的
- 一般,在前端写js函数,接口负责查询数据,然后以函数调用方式,将数据作为函数的参数
(2)jquery的getJSON函数
<script>
$.getJSON("https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=?", function(data) {
var html = '<ul>';
for(var i = 0; i < data.length; i++)
{
html += '<li>' + data[i] + '</li>';
}
html += '</ul>';
$('#divCustomers').html(html);
});
</script>
- getJSON的第一个参数为jsonp接口地址
- 第二个参数为回调函数,其具有一个参数,是jsonp返回函数调用的参数
3、基于js代码
3.1 document.write
(1)页面加载时触发
document.write("<script>alert('123')<\/script>")
document.write("<script src='test1.js'><\/script>")
- 不论是直接写,还是引入外部js,都会正确执行
(2)页面加载后触发
<script>
function fun1(){
document.write("<script src='test1.js'><\/script>")
}
</script>
<button onclick="fun1()">点击</button>
- 正确引入外部js并执行
3.2 eval
<script>
function fun1(){
eval("alert(55)")
}
</script>
<button onclick="fun1()">点击</button>
- 点击之后正确执行
3.3 直接篡改script的src属性
该方法尝试并不可行,外部js并未下载,控制台也无报错
<script>
function fun1(){
// document.getElementsByTagName("script")[0].src = "test2.js" document.getElementById("s1").setAttribute("src","test2.js")
}
</script>
<button onclick="fun1()">点击</button>
3.4 新建元素
<script>
function fun1(){
s = document.createElement("script")
s.setAttribute("src", "test2.js")
document.body.appendChild(s)
}
</script>
<button onclick="fun1()">点击</button>
- 验证是可行的,成功执行
5、基于jquery
标签:脚本,function,浏览器,script,js,点击,html,document From: https://www.cnblogs.com/wd404/p/17335448.html