web刷题记录(5)

[羊城杯 2020]easycon

        进来以后就是一个默认测试页面, 在这种默认界面里,我觉得一般不会有什么注入点之类的,所以这里先选择用御剑扫扫目录看看有没有什么存在关键信息的页面

         扫了一半发现,很多都是和index.php文件有关,这里选择查看该文件

访问以后发现是一个弹窗

        这个弹窗和一句话木马很像,从其中的话分析弹窗的三个单词,可以大致推测出,eval,命令执行函数;post,传参方式;cmd,命令格式。这里的话考虑两个方向,一个是,一句话木马,看看能不能和蚁剑连接;第二种思路的话,以post传参的格式 ,使用RCE。

        思路一:

确实能连接,那么这里选择看看文件信息先

        遍历了一下目录,发现没有直接和flag有关的文件,但是发现了一个可疑文件,即bbbbbbbbb.txt

从这个头文件信息,其实大概就能猜到是base64转图片了,同时看到开头的/9j/,根据经验是base64编码转图片,并且头部缺少内容data:image/jpg;base64,
找一个base64在线转图片的网站,加上缺少的内容,进行转换,得到带有flag的图片

就得到了flag

思路二:

直接执行命令,post传参

cmd=system('ls');

tac命令查看那个文件

也可以获得目标文件信息,可通过同样方式解码获得关键flag信息

[NISACTF 2022]level-up

在初始界面中没有发现什么有用的信息

看看源代码

发现提示有Disallow指令,说明有robots.txt文件,直接访问看看\

发现有提示文件信息,再进入

开始代码审计

  1. error_reporting(0);:该语句关闭了 PHP 的错误报告,这意味着即使代码存在错误,也不会将错误信息输出到页面上。这是一种常见的安全做法,但它可能会隐藏潜在的问题。(比如格式不对那些信息会提示)

  2. include "str.php";:这行代码尝试包含名为 "str.php" 的外部文件。这意味着脚本依赖于 "str.php" 文件中的一些功能或变量。

  3. if (isset($_POST['array1']) && isset($_POST['array2'])){:检查是否接收到了名为 "array1" 和 "array2" 的 POST 请求参数。如果两者都存在,则执行以下代码块。

  4. $a1 = (string)$_POST['array1'];$a2 = (string)$_POST['array2'];:将接收到的 POST 请求参数转换为字符串并分别赋值给变量 $a1 和 $a2。

  5. if ($a1 == $a2){ die("????"); }:检查 $a1 和 $a2 是否相等。如果相等,则输出 "????" 并终止脚本执行。这是一个奇怪的逻辑,因为即使相等也会导致脚本终止,可能是为了防止特定的情况发生。

  6. if (md5($a1) === md5($a2)){ echo $level3; }:使用 MD5 哈希算法比较 $a1 和 $a2 的哈希值是否相等。如果相等,则输出变量 $level3 的值。这表明如果两个字符串经过 MD5 哈希后相等,就会显示 $level3 的内容

  7. else{ die("level 2 failed ..."); }:如果以上两个条件都不满足,则输出 "level 2 failed ..." 并终止脚本执行。

  8. else{ show_source(__FILE__); }:如果没有接收到名为 "array1" 和 "array2" 的 POST 请求参数,则显示当前文件的源代码。这是一种用于调试和了解脚本内容的方法,但也可能会暴露代码逻辑和潜在的安全问题。

        这里是典型的md5类型题目,但是这里存在的问题是,因为这里是强匹配加字符型所以0e和[]都不行,这里要用到md5真正一样的字符串

4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2
4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2
他们的md5值相同,都是
008ee33a9d58b51cfeb425b0959121c9

因为里面有不可见字符,所以这里选择用url编码输出不可见字符

payload

array1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&array2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

 得到Level___3.php

这个的话,和前一个代码绕过有点像

但是是sha1的强碰撞

payload

array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1

得到了level_level_4.php

这里涉及到一个知识点就是parse_url()函数的使用,后面会一起整理,简单来说,就是请求url,并且解析url的各个部分,然后呢,get传参,存在的问题呢就是,有一个正则,过滤掉了参数里面的_,但是我们可以用+号或者[来绕过

进入55_5_55.php  

这里的关键呢,就是

if(preg_match('/^[a-z0-9_]*$/isD',$a)) :使用正则表达式检查变量 $a 中的值是否仅包含小写字母、数字和下划线,并且不区分大小写。如果匹配成功,则执行下面的代码块。/i   不区分大小写,/s匹配任何不可见字符,/D如果以$限制结尾字符,则不允许结尾有换行。

/^[a-z0-9_]*$/isD 是一个正则表达式模式,含义是从字符串的开头 ^ 到结尾 $,匹配任意数量的小写字母、数字和下划线,且不区分大小写(i 标志),并且 D 表示模式中没有用到多行模式。

这里我也不会,看了其他师傅的wp,才发现要用create_function()函数来处理

        $a在else里面可以使用create_function来创建一个匿名函数,用/*来注释掉后面的代码最后的payload

大概了解之后呢,就有多种解法了

解法一:

?a=\create_function&b=}system('cat /f*'); /*

create,第一个\绕过正则,}闭合create_function,这样就可以进行我们想执行的代码

后面的/*是为了把原本的}符号给注释掉,这样就执行了system('cat /f*')函数,这里的*号是通配符,相当于可以查找所有以f开头的文件

解法二:

?a=\create_function&b=}var_dump(file_get_contents("/flag"));/*

这里跟上面不一样的一点是,这里使用了其他两个函数,这里用的是var_dump打印函数和file_get_contents函数一起使用来显示/flag中的内容(file_get_contents()读取文件的内容并返回其内容作为字符串 )

与解法一稍微不同的一点是,这里的对于flag文件的查看,不能使用通配符,因为读取文件内容的特性比较特定,若使用通配符,会导致无法准确读取,因此在得出改payload之前,还通过了scandir命令来读取了根目录的内容,锁定了flag文件的名称,才得出了该payload

[HNCTF 2022 Week1]What is Web

web学习的思路推荐

因为题目标签给了源码泄露,所以根据经验尝试在源码里面找一找有没有注释给了相关的提示,眼搓了一下,没有特别明显的信息,所以筛选<!看看,定位到了这里

解码,得到flag

[HNCTF 2022 Week1]Interesting_http

题目中带有http,猜测与http协议有关

用post传参直接传want没用,那这里的want应该是参数,成功进入下一个页面,这里又给了提示

 替换一下1,试试看,提示不是admin

抓包看看

发现这个信息是在cookie头里面,改掉

得到回显,要本地,改一下xff

得到了flag

[HCTF 2018]Warmup

打开就是一张图片,看看源码,发现有隐藏文件

还是代码审计

         大概意思呢,就是定义了一个名为emmm的类,在该类中有一个静态方法checkFile用于检查要包含的文件是否在白名单中,白名单是一个关联数组$whitelist,其中包含了允许包含的文件的键值对。

        在代码中,允许包含的文件有"source"=>"source.php"和"hint"=>"hint.php"。(白名单)

        然后这个mb_substr函数我也不清楚,查了资料以后,大概了解了,然后里面还插了一个mb_strpos,这个mb_strpos函数嵌套在了mb_substr函数中,准确说并不叫嵌套,而是将返回值作为了它的一个参数。

说明:符号点 '.' 是 PHP 中的字符串连接运算符,它用于将两个字符串连接在一起,形成一个更长的字符串。在这里,它将 $page 变量的值和一个问号字符 '?' 连接在一起,形成一个新的字符串,在这个新的字符串中查找问号是否存在。

        也就是说 in_array() 函数的第三个参数length肯定为正数,又因为in_array() 函数的第二个参数start为0,因此会在字符串中的第一个字符处开始按照length长度进行截取,重新赋值给page。

        然后后面就是一直绕白名单,验证白名单

        先尝试包含hint.php

  

        得到了回显 ,则尝试传入?file=hint.php?ffffllllaaaagggg,发现最底下什么都没有出现,说明传入的方式和格式没问题,不然会出现别的或者那个笑脸图。猜测可能有后缀,尝试txt、php等后缀,没有变化,说明路径可能有问题。(后面才发现我们始终是在source.php页面下进行的传参操作,目的是利用include函数将flag文件包含出来,所以也就是说这个文件根本不在白名单里面,所以是无法通过验证得到的)考虑路径问题的话,按结构来说source.php应该是在html目录下,往上应该还要有www,var,根目录,返回一下看看

  

得到了flag(这里其实四个就够,因为四个就能返回到根目录,但是返回到根目录以后,就无法再往上返回,所以会停留在根目录)

知识点:

RCE(远程代码执行漏洞)

        因为应用系统给了用户提供指定的远程命令的操作,常见的比如:路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面,用户通过从这些界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 因此,如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交的命令,会反过来控制应用系统,当它们在后台进行执行时,甚至会控制整个后台服务器。常见常用的函数

还有代码执行函数:

eval():将字符串作为php代码执行;

assert():将字符串作为php代码执行;

preg_replace():正则匹配替换字符串;

create_function():主要创建匿名函数;

call_user_func():回调函数,第一个参数为函数名,第二个参数为函数的参数;

call_user_func_array():回调函数,第一个参数为函数名,第二个参数为函数参数的数组;

可变函数:若变量后有括号,该变量会被当做函数名为变量值(前提是该变量值是存在的函数名)的函数执行;

Disallow指令

    Disallow 是指一个文件或目录的指令,用于告诉搜索引擎不要访问或抓取这些内容。这通常在 robots.txt 文件中使用,该文件位于网站的根目录下,它告诉搜索引擎哪些页面可以访问,哪些页面应该被忽略。

例如,如果一个网站有一个包含私人信息的目录,如 /private,但不希望搜索引擎抓取这个目录下的内容,就可以在 robots.txt 文件中使用 Disallow 指令来限制访问,如下所示:

User-agent: *
Disallow: /private/

在leve-up那题里面也有具体展示

parse_url()函数

    parse_url() 函数是 PHP 中用于解析 URL(Uniform Resource Locator)的内置函数。它将一个完整的 URL 字符串解析成各个组成部分,并返回一个关联数组,其中包含了 URL 的各个部分信息。

下面是 parse_url() 函数的基本语法:

php

parse_url(string $url [, int $component = -1 ] ) : mixed

  • $url:需要解析的 URL 字符串。
  • $component(可选):一个可选的整数参数,用于指定需要返回的 URL 组件。默认值为 -1,表示返回包含所有组件信息的关联数组。如果提供了指定的组件常量,函数将只返回该组件的值。可以使用以下常量:
    • PHP_URL_SCHEME:URL 协议(例如 http、https)。
    • PHP_URL_HOST:主机名。
    • PHP_URL_PORT:端口号。
    • PHP_URL_USER:用户名。
    • PHP_URL_PASS:密码。
    • PHP_URL_PATH:路径部分。
    • PHP_URL_QUERY:查询字符串。
    • PHP_URL_FRAGMENT:片段标识符(即 URL 中的 # 后面的部分)。

parse_url() 函数解析 URL 字符串后,返回一个关联数组,其中包含了 URL 的各个组成部分的信息。根据提供的 URL,可以使用该数组访问各个部分的值。例如:

$url = "https://www.example.com/path/to/page?param1=value1&param2=value2#section";$url_components = parse_url($url);echo $url_components['scheme']; // 输出:https
echo $url_components['host']; // 输出:www.example.com
echo $url_components['path']; // 输出:/path/to/page
echo $url_components['query']; // 输出:param1=value1&param2=value2
echo $url_components['fragment']; // 输出:section

通过 parse_url() 函数,可以方便地从 URL 字符串中提取出各个部分的信息,以便进行处理和操作。

create_function()函数

    create_function() 函数是 PHP 中的一个过时函数,用于动态创建匿名函数(Anonymous Functions)。它接受两个参数:参数字符串函数体字符串,然后返回一个匿名函数。该函数被用于在 PHP 5.3 之前创建匿名函数,但自 PHP 7.2.0 起已被废弃,因为它的使用存在一些潜在的安全风险和性能问题

下面是 create_function() 函数的基本语法:

create_function(string $args, string $code) : callable|false

  • $args:一个字符串,表示匿名函数的参数列表,以逗号分隔,例如 '($arg1, $arg2)'
  • $code:一个字符串,表示匿名函数的函数体,即函数的具体实现代码。

create_function() 函数会返回一个匿名函数,或者在出现错误时返回 false

        举个例子,这里使用 create_function() 函数创建了一个匿名函数,并将其赋值给变量 $add,该函数实现了两个数相加的功能:

$add = create_function('$a, $b', 'return $a + $b;');
echo $add(2, 3); // 输出:5

var_dump打印函数

var_dump() 是 PHP 中用于打印变量信息的函数之一。它的作用是将一个或多个变量的信息输出到屏幕上,包括变量的数据类型和值,并且可以显示变量的结构,对于调试和查看变量内容非常有用。

下面是 var_dump() 函数的基本语法:

var_dump(mixed $expression [, mixed $... ] ) : void

  • $expression:需要打印的变量或表达式。
  • mixed:表示可以接受任意类型的参数。

var_dump() 函数会打印出变量的信息,包括变量的类型和值。具体打印的内容包括:

  • 对于标量(如整数、浮点数、字符串等):打印出变量的类型和值。
  • 对于数组:打印出数组的类型、元素个数以及每个元素的键和值。
  • 对于对象:打印出对象的类型、类名、属性个数以及每个属性的名称和值。
  • 对于其他类型的变量(如 NULL、资源等):打印出变量的类型。

        var_dump() 函数的输出比较详细,包含了变量的类型和值,以及其他相关信息,对于调试和查看变量内容非常有帮助

file_get_contents函数

file_get_contents() 函数是 PHP 中用于读取文件内容的内置函数之一。它用于将整个文件的内容读取到一个字符串中,并返回该字符串。

下面是 file_get_contents() 函数的基本语法:

file_get_contents(string $filename [, bool $use_include_path = FALSE [, resource $context [, int $offset = -1 [, int $maxlen = NULL ]]]]) : string|false 
  • $filename:需要读取的文件名,可以是本地文件路径或者是一个 URL。
  • $use_include_path(可选):一个布尔值,表示是否使用 include_path 来搜索文件。默认为 FALSE,表示不使用 include_path。
  • $context(可选):一个可选的资源类型的上下文参数,用于设置各种流传输选项或者上下文参数。
  • $offset(可选):一个可选的整数参数,用于设置读取文件时的偏移量(以字节为单位)。默认为 -1,表示从文件的开头开始读取。
  • $maxlen(可选):一个可选的整数参数,用于设置最大读取的字节数。默认为 NULL,表示读取整个文件。

file_get_contents() 函数会将指定文件的内容读取到一个字符串中,并返回该字符串,如果读取失败,则返回 FALSE

        其中除了本地文件之外,file_get_contents() 函数还可以用于读取远程文件,例如网站上的一个 URL。但是file_get_contents() 函数在读取远程文件时,需要启用 allow_url_fopen 选项。默认情况下,这个选项是开启的,但在某些环境中可能被禁用。因此,在level-5的使用中,实际上是先看了phpinfo的那个是不是allow,才使用的这个函数。(另外,对于大型文件,使用 file_get_contents() 会将整个文件加载到内存中,可能会消耗大量内存,因此在处理大型文件时需要谨慎使用。)

substr()、strpos() 和in_array()函数

        (mb_strpos和strpos,substr和mb_substr在功能上几乎没什么区别)

strpos(string,find,start)函数:

返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。注意: 字符串位置是从 0 开始,不是从 1 开始。
参数    描述
string    必需。规定被搜索的字符串。
find    必需。规定要查找的字符。
start    可选。规定开始搜索的位置。

mb_substr(str,start,length,encoding) 函数:

返回字符串的一部分,对于substr() 函数,它只针对英文字符, 而mb_substr()对于中文也适用。
参数    描述
str    必需。从该 string 中提取子字符串。
start    必需。规定在字符串的何处开始。

    正数 - 在字符串的指定位置开始
    负数 - 在从字符串结尾的指定位置开始
    0 - 在字符串中的第一个字符处开始

length    可选。规定要返回的字符串长度。默认是直到字符串的结尾。

    正数 - 从 start 参数所在的位置返回
    负数 - 从字符串末端返回

encoding    可选。字符编码。如果省略,则使用内部字符编码。

in_array(search,array,type)函数:

搜索数组中是否存在指定的值,找到值则返回 TRUE,否则返回 FALSE。
参数    描述
search    必需。规定要在数组搜索的值。
array    必需。规定要搜索的数组。
type    可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

    if (in_array($_page, $whitelist)) {
                    return true;
                }

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# Winform内嵌窗体(在主窗体上显示子窗体)

在开发Winform项目中&#xff0c;经常会要切换不同的窗体。通常程序都有一个主窗体&#xff0c;在切换窗体时往往需要关闭其他子窗体&#xff0c;这个实例就来介绍MDI主窗体内嵌子窗体的实现方法。 MDI主窗体要设置一个比较重要的属性&#xff0c;IsMdiContainertrue。子窗体的…

VRRP多备份组(华为)

#交换设备 VRRP多备份组 当 VRRP 配置为单备份组时&#xff0c;业务全部由 Master 设备承担&#xff0c;而 Backup 设备完全处于空闲状态&#xff0c;没有得到充分利用。VRRP 可以通过配置多备份组来实现负载分担&#xff0c;有效地解决了这一问题。 VRRP 允许同一台设备的…

ClickHouse内幕(1)数据存储与过滤机制

本文主要讲述ClickHouse中的数据存储结构&#xff0c;包括文件组织结构和索引结构&#xff0c;以及建立在其基础上的数据过滤机制&#xff0c;从Part裁剪到Mark裁剪&#xff0c;最后到基于SIMD的行过滤机制。 数据过滤机制实质上是构建在数据存储格式之上的算法&#xff0c;所…

迪杰斯特拉算法——C语言

迪杰斯特拉算法是一种用于在图中寻找节点之间最短路径的算法。它常用于路由以及其他图算法的子过程。 假设我们输入的是0顶点&#xff1a; 第一步&#xff0c;先寻找距离最小的顶点&#xff0c;这也是我们找到的第一个顶点&#xff0c;也就是顶点1&#xff0c;因为其他顶点距离…

转型AI产品经理(4):“认知负荷”如何应用在Chatbot产品

认知负荷理论主要探讨在学习过程中&#xff0c;人脑处理信息的有限容量以及如何优化信息的呈现方式以促进学习。认知负荷定律认为&#xff0c;学习者的工作记忆容量是有限的&#xff0c;而不同类型的认知任务会对工作记忆产生不同程度的负荷&#xff0c;从而影响学习效果。以下…

最短路径Dijkstra算法详解

目录 最短距离问题 最短路径问题 进阶--标尺增多 升级方法 例题应用 最短距离问题 Dijkstra算法的策略&#xff1a; 设置集合S存放已被访问的顶点&#xff0c;然后执行n次下面的两个步骤&#xff08;n为顶点个数&#xff09;&#xff1a; &#xff08;1&#xff09;每次…

Django框架中Ajax GET与POST请求的实战应用

系列文章目录 以下几篇侧重点为JavaScript内容0.0 JavaScript入门宝典&#xff1a;核心知识全攻略&#xff08;上&#xff09;JavaScript入门宝典&#xff1a;核心知识全攻略&#xff08;下&#xff09;Django框架中Ajax GET与POST请求的实战应用VSCode调试揭秘&#xff1a;L…

Nginx05-负载均衡详解、LNMP+NFS、会话保持、负载均衡状态检查upstream-check、平滑升级

目录 写在前面Nginx05Nginx 负载均衡&#xff08;upstream模块&#xff09;概述常见选择负载均衡和反向代理的区别Nginx负载均衡的方式Nginx运行状况检查备份服务器Nginx upstream模块选项说明 实验1 负载均衡两台frontfront配置lb01配置测试流程梳理 实验2 LNMPNFS小实验NFS配…

SpringBoot内置数据源

回顾: 在我们之前学习在配置文件当中配置对应的数据源的时候, 我们设置的数据源其实都是Druid的数据源, 并且其配置有两种方式, 当然这两种方式都需要我们导入对应的有关 德鲁伊 的依赖才行 一种是直接在开始设置为 druid 数据源类型的一种是在对应的正常的数据库配置下, 设置…

用户管理与服务器远程管理

用户管理 服务器系统版本介绍 windows服务器系统&#xff1a;win2000 win2003 win2008 win2012 linux服务器系统&#xff1a;Redhat Centos 用户管理 用户概述 &#xff08;1&#xff09;每一个用户登录系统后&#xff0c;拥有不同的操作权限。 &#xff08;2&#xff09;…

【C++课程学习】:类和对象(拷贝构造和运算符重载)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 ✍拷贝构造&#xff1a; &#x1f349;特点一&#xff1a; &#x1f349;特点二&#xff1a; &…

气膜建筑在体育和娱乐行业的多样化应用—轻空间

随着人们生活水平的提高和健康意识的增强&#xff0c;体育和娱乐行业的发展迎来了新的机遇和挑战。气膜建筑&#xff0c;作为一种新型建筑技术&#xff0c;因其独特的优势和广泛的应用场景&#xff0c;正在引领体育和娱乐行业的新潮流。 快速建设高品质体育场馆 气膜建筑以其快…

接口幂等性设计(5 大方案罗列)

结合案例、列举场景的接口幂等性设计方案。 方案 1. 状态机 业务场景&#xff0c;数据审核成功后进行短信通知&#xff0c;或者是订单状态变成已支付后&#xff0c;短信通知用户订单生成的详细信息&#xff0c;等等和状态有关的操作。 假设 status&#xff1a;0&#xff08;待…

基于遗传优化算法的风力机位置布局matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化算法的风力机位置布局matlab仿真&#xff0c;风力机位置布局优化是风能转换系统设计中的一个重要环节&#xff0c;旨在最大化风场的整体发电效率。仿…

创建 MFC DLL-使用关键字_declspec(dllexport)

本文仅供学习交流&#xff0c;严禁用于商业用途&#xff0c;如本文涉及侵权请及时联系本人将于及时删除 从MFC DLL中导出函数的另一种方法是在定义函数时使用关键字_declspec(dllexport)。这种情况下&#xff0c;不需要DEF文件。 导出函数的形式为&#xff1a; declspec(dll…

《书生·浦语大模型实战营》第4课 学习笔记:XTuner 微调 LLM:1.8B、多模态、Agent

文章大纲 1. 大模型微调简介2 快速上手2.1 环境安装2.2 前期准备2.2.1 数据集准备2.2.2 模型准备2.2.3 配置文件选择2.2.4 小结 2.3 配置文件修改2.4 模型训练2.4.1 常规训练2.4.2 使用 deepspeed 来加速训练2.4.3 训练结果2.4.4 小结 2.5 模型转换、整合、测试及部署2.5.1 模型…

[大模型]LLaMA3-8B-Instruct WebDemo 部署

环境准备 在 autodl 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu20.04)-->12.1 接下来打开刚刚租用服务器的 JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下载和运行 demo。 pip 换源…

FreeRTOS学习笔记-基于stm32(14)内存管理

一、FreeRTOS 内存管理简介 FreeRTOS有两种方法来创建任务&#xff0c;队列&#xff0c;信号量等&#xff0c;一种动态一种静态。静态方法需要手动定义任务堆栈。使用动态内存管理的时候 FreeRTOS 内核在创建任务、队列、信号量的时候会动态的申请 RAM。 我们在移植FreeRTOS时可…

6.结构体

目录 一、普通结构体&#xff08;struct&#xff09;1.1 说明1.2 举例1&#xff09;结构体定义及访问2&#xff09;结构体初化的简单写法3&#xff09;结构体更新语法 二、元组结构体&#xff08;tuple struct&#xff09;2.1 概念2.2 示例 三、类单元结构体&#xff08;unit-l…

安全智能预警软件有人试图窃取会立即发出高分贝警报已解锁VIP功能

一款手机安全智能预警软件&#xff0c;无论是网吧还是餐馆小聚&#xff0c;您的手机都能得到贴心的守护&#xff0c;一旦有人试图窃取&#xff0c;应用会立即发出高分贝警报&#xff0c;确保您在公交、地铁、商场等拥挤环境中依然能牢牢掌控手机。&#xff08;解锁专业版&#…