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文件,直接访问看看\
发现有提示文件信息,再进入
开始代码审计
-
error_reporting(0);
:该语句关闭了 PHP 的错误报告,这意味着即使代码存在错误,也不会将错误信息输出到页面上。这是一种常见的安全做法,但它可能会隐藏潜在的问题。(比如格式不对那些信息会提示) -
include "str.php";
:这行代码尝试包含名为 "str.php" 的外部文件。这意味着脚本依赖于 "str.php" 文件中的一些功能或变量。 -
if (isset($_POST['array1']) && isset($_POST['array2'])){
:检查是否接收到了名为 "array1" 和 "array2" 的 POST 请求参数。如果两者都存在,则执行以下代码块。 -
$a1 = (string)$_POST['array1'];
和$a2 = (string)$_POST['array2'];
:将接收到的 POST 请求参数转换为字符串并分别赋值给变量 $a1 和 $a2。 -
if ($a1 == $a2){ die("????"); }
:检查 $a1 和 $a2 是否相等。如果相等,则输出 "????" 并终止脚本执行。这是一个奇怪的逻辑,因为即使相等也会导致脚本终止,可能是为了防止特定的情况发生。 -
if (md5($a1) === md5($a2)){ echo $level3; }
:使用 MD5 哈希算法比较 $a1 和 $a2 的哈希值是否相等。如果相等,则输出变量 $level3 的值。这表明如果两个字符串经过 MD5 哈希后相等,就会显示 $level3 的内容。 -
else{ die("level 2 failed ..."); }
:如果以上两个条件都不满足,则输出 "level 2 failed ..." 并终止脚本执行。 -
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¶m2=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¶m2=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;
}
相关文章:
web刷题记录(5)
[羊城杯 2020]easycon 进来以后就是一个默认测试页面, 在这种默认界面里,我觉得一般不会有什么注入点之类的,所以这里先选择用御剑扫扫目录看看有没有什么存在关键信息的页面 扫了一半发现,很多都是和index.php文件有关࿰…...
Redis高并发高可用
1. 复制机制 在分布式系统中,为了解决单点问题,通常会将数据复制多个副本部署到其他机器,以满足故障恢复和负载均衡等需求。Redis提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础,后面的…...
【前端取不到cookie的的原因】http-only
某条cookie有http-only属性时,下面两种方法都取不到,还是改需求吧,别取了 1、 npm install js-cookie --save import Cookies from js-cookie let cookieValue Cookies.get(name)2、document.cookie...
推荐 2 个 火火火火 的开源项目
推荐两个开源项目,一个能让你的小爱音响更聪明。另外一个可以让你简单的下载互联网网站上的视频、文件、富文本内容。 01 MiGPT: 让你的小爱音响更聪明 让你的小爱音箱更聪明,提高智能家居的互动性和个性化体验的开源利器! MiGPT 将 ChatGPT …...
从0到100:找搭子小程序开发笔记(一)
背景调查 “找搭子”小程序:能够解决人们在社交、休闲和约会方面的需求,提供方便快捷的方式来找到合适的伴侣或活动伙伴。许多人在社交场合中感到焦虑或不安,因此他们更倾向于使用在线平台来认识新的朋友或搭子。有些人可能生活在一个较小或…...
迷宫最短路径求解--c++
【代码】 #include<iostream> #include<queue> #include<stack> using namespace std; #define ROW 8 #define COL 8 //测试迷宫数据 int maze[ROW][COL] {{0,0,0,1,0,0,0,0},{0,1,0,1,0,1,0,1},{0,1,0,0,0,1,0,1},{0,1,0,1,1,1,0,1},{0,1,0,1,1,0,0,0},{0…...
SpringFramework总结
一.SpringFramework介绍 (一)Spring 广义上的 Spring 泛指以 Spring Framework 为基础的 Spring 技术栈。 Spring 已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如 Spring Frame…...
品牌与产品:消费者决策的经济逻辑与品牌宣传的战略意义
在当今日益全球化的经济环境中,品牌与产品之间的关系对于企业的成功与否起着至关重要的作用。然而,在消费者做出购买决策时,他们到底是在选择产品本身,还是在选择附着在产品之上的品牌价值?同样,当客户选择…...
MFC四种方法编写多线程
本文以四个demo为例,对MFC的多线程进行学习。学习的过程中写了四个demo,将其做成笔记,发布在csdn上面。 mfc多线程demo1 volatile BOOL m_bRun; CEdit* edit; void ThreadFunc(){CTime time;CString strTime;m_bRun true;while(m_bRun){ti…...
VPN简介
一、VPN 概念定义 VPN,即虚拟专用网络(Virtual Private Network),依靠ISP(Internet Service Provider)和NSP(Network Service Provider)在公共网络中建立的虚拟专用通信网络&#x…...
【C/C++】用C语言写一个数据仓库,存储和修改数据
这个代码实现了一个简单的数据仓库,其中数据被存储在一个3x3的二维数组中。用户可以通过控制台界面与这个数据仓库进行交互,可以选择查看数据或者修改数据。 基础版源码: #include <stdio.h>#define HOUSESIZE 3 int arr[HOUSESIZE][…...
YOLO v5与YOLO v8框图比较
1. 介绍 YOLO (You Only Look Once) 是一个用于目标检测的卷积神经网络模型,以其高精度、高速度和易用性著称。YOLO v5 是目前最流行的 YOLO 版本之一,而 YOLO v8 是 YOLO 的最新版本。 2. 原理详解 YOLO 系列模型的基本原理是将目标检测任务转化为图…...
Redis集群(5)
集群原理 节点通信 通信流程 在分布式存储系统中,维护节点元数据(如节点负责的数据、节点的故障状态等)是关键任务。常见的元数据维护方式分为集中式和P2P方式。Redis集群采用P2P的Gossip协议,这种协议的工作原理是节点之间不断…...
STM32H5 DAC 配置
STM32 H5 DAC的详细初始化过程可以分为以下几个步骤,以下是根据参考文章和相关资料整理的具体步骤和参数设置: 1、使能相关时钟: 使能GPIOA(或其他对应DAC输出引脚的GPIO端口)的时钟。这通常是通过调用RCC_APB2Perip…...
第十九节:暴力递归到动态规划
一 动画规划的概念 优化出现重复解的递归 一旦写出递归来,改动态规划就很快 尝试策略和状态转移方程是一码事 学会尝试是攻克动态规划最本质的能力 如果你发现你有重复调用的过程,动态规划在算过一次之后把答案记下来,下回在越到重复调用过程…...
服务器部署spring项目jar包使用bat文件,省略每次输入java -jar了
echo off set pathC:\Program Files\Java\jre1.8.0_191\bin START "YiXiangZhengHe-8516" "%path%/java" -Xdebug -jar -Dspring.profiles.activeprod -Dserver.port8516 YiXiangZhengHe-0.0.1-SNAPSHOT.jar 将set path后面改成jre的bin文件夹 START 后…...
2024备忘知识点
1. adb shell dumpsys package f |grep fin 过滤查找指纹服务 1. adsp write /sys/kernel/boot_adsp/boot 1 Please change replace dev_dbg into dev_err in kernel file adsp-loader.c. Then check whether "write /sys/kernel/boot_adsp/…...
JS基础与高级应用: 性能优化
在现代Web开发中,性能优化已成为前端工程师必须掌握的核心技能之一。本文从URL输入到页面加载完成的全过程出发,深入分析了HTTP协议的演进、域名解析、代码层面性能优化以及编译与渲染的最佳实践。通过节流、防抖、重复请求合并等具体技术手段࿰…...
Python | Leetcode Python题解之第145题二叉树的后序遍历
题目: 题解: class Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:def addPath(node: TreeNode):count 0while node:count 1res.append(node.val)node node.righti, j len(res) - count, len(res) - 1while i < j:res…...
公司面试题总结(二)
7. 说说 JavaScript 中的数据类型?存储上的差别? • 基本类型: o Number o String o Boolean o Undefined o null o symbol • 引用类型 o Object o Array o Function • 声明变量时不同的内存地址分配: o 简单类型的…...
人脸识别和 ArcFace:用于深度人脸识别的附加角边际损失
在本文中,您将发现一种 ArcFace 方法,该方法可获得用于人脸识别的高分辨特征。阅读本文后,你将了解: 人脸识别任务如何工作。如何计算人脸匹配。SoftMax 和 ArcFace 的直观区别。ArcFace 的几何解释。ArcFace 背后的数学原理本文假定您已经熟悉用于多类分类、检测和 SoftMax…...
双标引领:汽车软件安全的ASPICE与ISO21434之道
随着汽车行业的飞速发展,尤其是智能化、网联化趋势的加剧,汽车软件开发的复杂性和安全性需求日益提升。在这样的背景下,ASPICE标准和ISO21434安全标准应运而生,为汽车软件的开发和管理提供了坚实的支撑。 ASPICE(Auto…...
再度牵手,制造升级 | 毅达科技IMS OS+通用产品集+行业套件项目正式启动!
在数字化与智能制造的浪潮中,制造业企业纷纷加快转型步伐,力求通过技术创新实现生产效率与质量的双重提升。近日,广东毅达医疗科技股份有限公司(以下简称“毅达科技”)再次携手盘古信息,正式启动了IMS 数字…...
大疆智图_空三二维重建成果传输
一、软件环境 1.1 所需软件 1、 大疆智图:点击下载; 2、 ArcGIS Pro 3.1.5:点击下载,建议使用IDM或Aria2等多线程下载器; 3、 IDM下载器:点击下载,或自行搜索; 4、 Fas…...
python实现无人机航拍图片像素坐标转世界坐标
背景 已知相机参数(传感器宽度和高度、图像宽度和高度、焦距、相对航高、像主点坐标 ),在给定像素坐标的前提下,求世界坐标,大部分通过AI来实现,不知道哪个步骤有问题,望大家指正 脚本 impor…...
C#面:什么是 Windows 服务,它的生命周期与标准的 EXE 程序有什么不同
C#中的Windows服务是一种在后台运行的长时间运行的应用程序,它可以在Windows操作系统启动时自动启动,并在系统运行期间持续运行。与标准的EXE程序相比,Windows服务具有以下不同之处: 生命周期:Windows服务的生命周期与…...
Java基础面试题自测
文章目录 一、Java 中有哪 8 种基本数据类型?说说这 8 种基本数据类型对应的包装类型?二、包装类型的常量池技术了解么?三、为什么要有包装类型?四、什么是自动拆装箱?原理?四、遇到过自动拆箱引发的 NPE 问…...
【LeetCode 第 401 场周赛】K秒后第 N 个元素的值
文章目录 1. K秒后第 N 个元素的值🆗 1. K秒后第 N 个元素的值🆗 题目链接🔗 🐧解题思路: 前缀和 小规律🍎 🍎 从上图观察可知,规律一目了然,arr[i] arr[i] 对上一…...
游戏心理学Day10
习得性动机。 习得性动机也称社会性动机是指人与社会生活相联系的后天习得的动机,这类动机比原发性动机要多很多。 成就动机。 成就动机是指个人追求进步以及达到目标的内在动力。 在游戏中设计师总会担心过多的失败,会令玩家感到挫败进而离开游戏 对…...
MySQL表设计经验汇总篇
文章目录 1、命名规范2、选择合适的字段类型3、主键设计要合理4、选择合适的字段长度5、优先考虑逻辑删除,而不是物理删除6、每个表都需要添加通用字段7、一张表的字段不宜过多8、定义字段尽可能not null9、合理添加索引10、通过业务字段冗余来减少表关联11、避免使…...
mysql做网站/网络营销的市场背景
服务器磁盘槽位管理 内容精选换一换云耀云服务器(Hyper Elastic Cloud Server,HECS)是可以快速搭建简单应用的新一代云服务器,具备独立、完整的操作系统和网络功能。提供快速应用部署和简易的管理能力,适用于网站搭建、开发环境等低负载应用场…...
网站制作书籍推荐/开网店哪个平台靠谱
1.ios离线打包配置appid 和 cer证书 和 描述文件2.iOS离线打包-支付插件配置主要注意打包:在info.plist root 节点添加 UniversalLinks 项,值和微信开放平台配置的一致,(微信开放平台配置的域名地址)3.本次核心处理微信支付链接的配置(微信…...
wordpress 主题文件夹/网站推广100种方法
SQL Server中,如果目标表存在:insert into 目标表 select * from 原表;SQL Server中,,如果目标表不存在:select * into 目标表 from 原表;Oracle中,如果目标表存在:insert into 目标表 select * from 原表;…...
网站未做安全隐患检测怎么拿shell/seo引擎优化是什
一、Python的排序 1、reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的;相反的;(判决等)撤销的 print list(reversed([dream,a,have,I])) #[I, have, a, dream] 2、让人糊涂的sort()与sorted() 在…...
白云网站建设多少钱/网络上哪里可以做推广
https://www.cnblogs.com/zhangzhifeng/category/835602.html 这是个困惑我很长时间的问题,到今天终于得到解决了。 话说Delphi有个很强的窗体设计器,这一点让VC粉丝垂涎三尺而不可得。但是,Delphi里设计的窗体并没有自动适应屏幕分辨率的属性…...
网站建设毕业答辩ppt/如何创建网站平台
背景 项目中使用到List求交集,很容易想到collecion.retainAll()方法,但是在数据量比较大时,这个方法效率并不高。本文研究了几种常用的方法,以供大家参考。 方法 【首先】 梳理下思路,List去重一般有几种方法。 『…...