首页 > 其他分享 >浏览器执行js脚本

浏览器执行js脚本

时间:2023-04-20 09:25:16浏览次数:37  
标签:脚本 function 浏览器 script js 点击 html document

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

相关文章

  • nodejs命令
    npm常用命令:1.npminstallpackage_name:安装指定的Node.js模块。2.npmuninstallpackage_name:卸载指定的Node.js模块。3.npmupdatepackage_name:更新指定的Node.js模块到最新版本。4.npmsearchpackage_name:搜索指定名称的Node.js模块。5.npmlist:列出当前项......
  • js介绍
    1、介绍javascript,简称为js,是一种解释型脚本语言,一般在浏览器运行,被所有现代浏览器支持,在h5中,默认脚本就是js。当然,也可以在其他支持js解析的环境中允许,比如服务端的node.js。js主要可以分为四个部分:基本语法,与es强烈相关,提供支持。包括语法规范、数据类型、运算符、控制结构......
  • js控制结构
    1、if…elseif…else…if(15){alert('abc')}js存在强转bool类型其他与java语法相同2、switch3、while4、dowhile5、forvarlist=[12,22,'abc','ddd']for(leti=0;i<list.length;i++){alert(list[i])}6、增强for7、迭代......
  • js数据类型
    1、介绍js是弱类型语言。2、数值varx1=34.00;//使用小数点来写varx2=34;//不使用小数点来写vary=123e5;//123000003、字符串s='abc's1="abc"s2=/xss///输出/xss/,连同/字符4、布尔varx=true;vary=false;5、数组varcars=newArray......
  • js语法
    1、注释//单行注释/*多行注释*/2、关键字3、标识符由数字、字母和下划线组成,首字符不能是数字4、代码分行使用()包围结构控制提交,使用{}控制代码块5、文本分行不存在/分行,必须使用+......
  • js函数
    1、介绍js函数是通过关键字function进行定义。functionfunctionName(parameters){执行的代码}2、匿名函数函数作为一个变量使用。varx=function(a,b){returna*b};varz=x(4,3);3、参数个数functionp(x1,x2){console.log(x1)console.log(x2)}p(......
  • js类
    1、介绍js中具有和java类似的类声明和创建对象。classRunoob{constructor(name,url){this.name=name;this.url=url;}}letsite=newRunoob("菜鸟教程","https://www.runoob.com");2、类继承js中也使用关键字extends进行类继承3、static静态......
  • jsonfilter 和 jshn.sh
    jsonfilter和jshn.sh来源https://blog.csdn.net/weixin_39637151/article/details/110610608 OpenWRT下自带了两个处理JSON文件的工具。工具一:/usr/bin/jsonfilter运行/usr/bin/jsonfilter得到如下提示:/usr/bin/jsonfilter命令行参数-a:将输入当数组处理。-i:指......
  • Chatgpt 帮忙写的脚本_使用powershell 写一段代码,功能实现将指定目录下多个csv 文件整
    需求:使用powershell写一段代码,功能实现将指定目录下多个csv文件整合成一个csv文件以下是使用PowerShell实现将指定目录下多个CSV文件合并为一个的示例代码:powershell点击查看代码#设置源目录和目标文件路径$sourceDirectory="C:\path\to\csv\files"$targetFilePa......
  • Chatgpt 帮忙写的脚本_用shell 写一段代码,要求获取指定目录下的所有文件的 文件路径、
    需求:用shell写一段代码,要求获取指定目录下的所有文件的文件路径、文件名、文件创建时间,文件最后修改时间,并将结果导出到指定路径的csv格式文件中以下是使用Shell实现获取指定目录下所有文件的路径、名称、创建时间和修改时间,并将结果导出到CSV文件的示例代码:点击查看代......