基于CTF探讨Web漏洞的利用与防范

写在前面

Copyright © [2023] [Myon⁶]. All rights reserved.

基于自己之前在CTF中Web方向的学习,总结出与Web相关的漏洞利用方法,主要包括:密码爆破、文件上传、SQL注入、PHP伪协议、反序列化漏洞、命令执行漏洞、文件包含漏洞、Vim文件泄露、HTTP协议、Cookie伪造、Git源码泄露,并就此总结出相关的防御应对措施。

原本是在W1R3S上进行了包括:信息收集、FTP渗透、Web渗透、John爆破、ssh远程登录、sudo提权等相关的渗透测试,但是考虑到内容太多,这里我主要总结从web渗透开始以及后续的测试,实质就是一个文件包含漏洞的利用。

本人CSDN博客地址:http://myon6.blog.csdn.net

期待大家的关注与支持!

目录

一、基本原理概述

1、Web漏洞利用

(1)SQL注入

(2)Git泄露与命令执行漏洞

(3)文件上传

(4)PHP伪协议与文件包含漏洞

(5)密码爆破

(6)Cookie伪造

(7)反序列化漏洞

(8)Vim文件泄露

(9)HTTP协议

2、基于W1R3S的渗透测试

(1)信息收集

(2)FTP渗透

(3)Web渗透

(4)John爆破

(5)ssh远程登录

(6)sudo提权

二、详细过程

1、Web漏洞利用

(1)SQL注入

(2)Git泄露与命令执行漏洞

(3)文件上传

(4)PHP伪协议与文件包含漏洞

(5)密码爆破

(6)Cookie伪造

(7)反序列化漏洞

(8)Vim文件泄露

(9)HTTP协议

2、基于W1R3S的Web渗透测试

三、结果分析

1、SQL注入

2、Git泄露与命令执行漏洞

3、文件上传

4、PHP伪协议与文件包含漏洞

5、密码爆破

6、Cookie伪造

7、反序列化漏洞

8、Vim文件泄露

9、HTTP协议

10、基于W1R3S的Web渗透测试

四、总结体会与防御措施


背景介绍

随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显,黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这也使得越来越多的用户关注应用层的安全问题,对Web应用安全的关注度也逐渐升温。

一、基本原理概述

1、Web漏洞利用

(1)SQL注入

SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一,我们可以通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码。

(2)Git泄露与命令执行漏洞

开发人员使用 git 进行版本控制,如果配置不当,会将 .git 文件夹直接部署到线上环境,引起git 泄露漏洞,我们可以通过 .git文件恢复网站源码,来获取一些敏感信息。

(3)文件上传

由于web的过滤不够严格,导致在上传的位置上,用户可以上传一些带有脚本的文件,web端对脚本文件进行php解析,可以任意执行脚本文件。

(4)PHP伪协议与文件包含漏洞

PHP伪协议是PHP支持的协议与封装协议,我们可以使用它实现文件读取,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。

(5)密码爆破

密码爆破又叫暴力猜解,简单来说就是将密码逐个尝试, 直到找出真正的密码为止, 本质上是利用了穷举法。

(6)Cookie伪造

一个脆弱的站点或者web应用可能把存储敏感状态信息直接在cookies,在浏览器手动改cookie的名称和值再刷新页面可能足以获得提升的权限。

(7)反序列化漏洞

PHP反序列化漏洞也叫PHP对象注入,形成的原因是程序未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行、文件操作、执行数据库操作等参数不可控。

(8)Vim文件泄露

当开发人员在线上环境中使用vim编辑器,在使用过程中会留下vim编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。

(9)HTTP协议

HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

2、基于W1R3S的渗透测试

w1r3s是一台存在着很多漏洞的靶机,可为我们提供相关的漏洞进行渗透测试。

(1)信息收集

信息收集就像一场战争中的“深入敌后”的一项“情报收集”任务。在开始渗透测试工作之前,我们通过要对目标使用各种工具进行信息收集工作,找出目标的漏洞和弱点,然后利用这些漏洞和弱点进行攻击,使得渗透任务得以顺利地完成。

(2)FTP渗透

FTP全名File Transfer Protocol,一种可以通过网络传输文件的协议,FTP协议是不安全的,不支持加密传输,它使用客户端到服务器这种类型,客户端启动后尝试对服务器发起连接请求,然后提供登录凭证,如果正确则开启会话。

(3)Web渗透

通过模拟恶意黑客的攻击方法,来评估Web站点安全的一种评估方法。常见的Web漏洞通常包括:输入输出验证不充分、设计缺陷、环境缺陷、sql注入、xss、csrf、目录穿越、文件上传、代码注入、命令注入、信息泄漏、暴力破解、越权漏洞、非授权对象引用、业务逻辑缺陷、框架漏洞、基础环境漏洞。

(4)John爆破

破解密码方式简单而粗暴,理论上只要时间上面允许,可以破译绝大多数用户密码,支持多种不同类型的系统架构,主要目的是破解不够牢固的Unix/Linux系统密码。

(5)ssh远程登录

SSH(Secure Shell )是一种安全通道协议,主要用来实现字符界面的远程的登录、远程复制等功能,SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,因此SSH协议具有很好的安全性。

(6)sudo提权

是一种 Linux 命令,用于提升用户权限以执行特权操作,在执行sudo命令时,将普通用户的权限提升为root用户的权限,以便执行需要root权限的操作。

二、详细过程

1、Web漏洞利用

(1)SQL注入

这里我主要以sqlmap来演示,当然手工注入也是可以的。

(1)尝试列出所以数据库:

sqlmap -u "http://61.147.171.105:54285/?id=1" --dbs

(2)可以看到有一个名为cyber的数据库,我们指定列出它的表

sqlmap -u "http://61.147.171.105:54285/?id=1" -D cyber –tables

(3)这个数据库里只有一个表,且和数据库同名,我们继续列出指定表的字段

sqlmap -u "http://61.147.171.105:54285/?id=1" -D cyber -T cyber --columns

(4)尝试获取指定字段中的数据

sqlmap -u "http://61.147.171.105:54285/?id=1" -D cyber -T cyber -C pw --dump

(2)Git泄露与命令执行漏洞

(1)在About里发现网站是使用Git、PHP、Bootstrap搭建的

使用dirsearch扫一下

(2)从结果可以看出确实存在.git 目录,我们这里使用Githack来下载并恢复.git文件,切换到Githack所在位置,执行命令:python Githack.py url

(3)进入下载文件所在目录查看

打开flag.php,但是并没有看到什么

在index.php里发现有用代码

(4)代码审计

使用get请求方式给page传参,如果没传,默认page=home 

(这也是为什么我们打开题目链接进去是在home页面)

$file会接收传入的$page并且在其前面拼接templates/,在其后面拼接.php

strpos() 函数会在'$file'这个字符串中进行查找,是否存在'..'

当字符串里有'..',则会返回一个数(即'..'第一次出现的位置),结果为true

与右边的false并不恒等,此时就会执行or右边的die()函数,输出 Detected hacking attempt!

file_exists() 函数还会检查我们传入的page拼接后是否存在

(5)构造payload

这里实际上是一个命令执行漏洞

我们可以直接在第一个assert()函数处就调用cat命令来获取flag

首先传入的page肯定不能有 '..',使strpos() 函数返回false,false和右边的false恒等

构造payload:?page=123') or system("cat templates/flag.php");//

在最后添加注释//,确保后面的代码不会执行

(3)文件上传

(1)在源码中找到默认登录账户和密码

(2)登陆成功后上传一句话木马

(3)这里没有任何的绕过,直接上蚁剑尝试连接

(4)PHP伪协议与文件包含漏洞

(1)打开题目链接,代码审计

file2被放入了file_get_contents() 函数,且要求返回值为 hello ctf

file1是要包含的文件,且flag应该是在文件flag.php里面

我们要想办法来读取这个文件,使用php://filter伪协议来读取源代码

即 file1=php://filter/read=convert.base64-encode/resource=flag.php

这里出现了file_get_contents()函数,想到用php://input来绕过

(2)构造payload

/?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input,且post传入 hello ctf

(3)得到一串base64编码

PD9waHAKZWNobyAiV1JPTkcgV0FZISI7Ci8vICRmbGFnID0gY3liZXJwZWFjZXtjMjNkY2VlOWYxZTc0NTRlNzVlMTA5OGJlMmZhM2IzOH0=,解码即可得到PHP源码。

(5)密码爆破

(1)根据题目描述我们先试用御剑扫一下,发现存在shell后门,

(2)访问shell.ph,需要连接密码

(3)这里直接使用bp来爆破密码

抓包后发到Intruder 模块,并设置爆破的位置和用来爆破的字典

(4)开始攻击

爆破过程中,我们按长度排序,长度不一样的就是密码

至此,我们爆破出了密码是 hack

(6)Cookie伪造

题目要求只有管理员才能拿到flag

(1)在cookie里找到了一些东西

(2)通过查看发现web构架发现为flask,想到session伪造

(3)将cookie值进行base64解码

输出是json格式存储,还有一堆乱码,应该就是数据签名。

(4)使用Python脚本进行session伪造

根据前面base64解码得到session(json)格式,我们将name伪造为admin,并对session数据进行加密。

(5)将伪造的cookie传给session即可

(7)反序列化漏洞

(1)代码审计

这里出现了一个__wakeup()函数,在进行PHP反序列化时,会先调用这个函数,但是如果序列化字符串中表示对象属性个数的值大于真实的属性个数时就会跳过__wakeup()的执行。

(2)脚本编写

<?php

class xctf{

public $flag = '111';

public function __wakeup(){

exit('bad requests');

}

}

$Myon = new xctf();

$Myon = serialize($Myon);

echo $Myon;

?>

(3)构造payload

上面输出的是O:4:"xctf":1:{s:4:"flag";s:3:"111";}

可以看到__wakeup()函数起作用了,我们需要将xctf的参值改为2(任何大于1的数),由于与反序列化规则不符,就会反序列化失败,从而绕过__wakeup()函数。

(8)Vim文件泄露

(1)访问.index.php.swp将文件下载下来,发到centos里

(2)使用vim -r index.php.swp恢复文件

(3)代码审计

给password传入"Give_Me_Your_Flag"且要先经过base64编码

就会输出Oh You got my password!并且调用system函数执行传入的cmd命令

(4)将字符串base64编码

(5) 构造payload

postpassword=R2l2ZV9NZV9Zb3VyX0ZsYWc=&&cmd=cat /flag

(9)HTTP协议

使用bp抓包改包重发

(1)请求头写 x-forwarded-for: 127.0.0.1

换一种 client-ip: 127.0.0.1

(2)请求头写 referer: pornhub.com

(3)请求头写 user-agent: Chrome

(4)请求头写 via: Clash.win

拿到一个路径

2、基于W1R3S的Web渗透测试

(1)直接访问目标ip地址

查看靶机80端口的web服务,发现是个apache的主页

(2)使用dirsearch对目标主机80端口的web服务进行目录爆破

dirsearch -u 192.168.88.131

爆出两个可疑目录/administrator和/wordpress

(wordpress这个框架存在很多漏洞)

(3)使用whatweb命令查询,发现该网站的cms为Cuppa

(4)使用searchsploit命令查询Cuppa cms是否存在漏洞

searchsploit cuppa cms

(5)发现存在一处漏洞, 漏洞详情保存在25971.txt中, 将它导出来

searchsploit cuppa cms -m 25971.txt

(6)查看漏洞详情得知, 该cms可通过文件包含漏洞读取任意文件

(7)使用curl命令提交Post请求:

curl -X POST -d urlConfig=../../../../../../../../../etc/passwd http://192.168.88.131/administrator/alerts/alertConfigField.php

用同样的方法尝试读取shadow文件,该文件是用来存放用户名密码的

curl -X POST -d urlConfig=../../../../../../../../../etc/shadow http://192.168.88.131/administrator/alerts/alertConfigField.php

发现两处很明显的用户信息

分别对应着www-data用户:加密密码,w1r3s用户:加密密码

(8)使用john爆破

破解成功,得到:

用户 www-data  密码 www-data

用户 w1r3s  密码 computer

(9)ssh远程登录

远程登录成功

whoami  查看一下当前用户是谁

uname -a   查看系统状态

sudo -l   查看当前用户权限

可以看到当前用户具有所有权限

(10)sudo提权

因为w1r3s这个用户具有全权限,这里可以直接提权至root用户

sudo su 

提权成功

切换到root根目录,直接找到flag

三、结果分析

1、SQL注入

拿到flag cyberpeace{818e277716501adc71a98b501c4d7a99}

总结一些sqlmap常用的参数:

-D 选择使用哪个数据库    -T 选择使用哪个表    -C 选择使用哪个列

--tables 列出当前的表  --columns 列出当前的列 --dump 获取字段中的数据

2、Git泄露与命令执行漏洞

传入page后查看源码,找到flag

cyberpeace{1f150d17210f2080d18800a5a99e9f9b}

3、文件上传

连接成功,并且在根目录下面找到

flag=NSSCTF{96cd0bd4-f5e6-4fbf-8b09-c38f244d4aa6}

4、PHP伪协议与文件包含漏洞

Base64解码后得到PHP源码

拿到 $flag = cyberpeace{c23dcee9f1e7454e75e1098be2fa3b38}

存在文件包含时使用PHP伪协议,可能遇到的文件包含函数:

1、include 2、require 3、include_once 4、require_once 5、highlight_file

6、show_source 7、flie 8、readfile 9、file_get_contents

10、file_put_contents 11、fopen

5、密码爆破

将密码修改成正确的密码后放包

查看页面响应,已经显示出flag

flag{0bd17d36fcc7c9771191be6e558833ec}

6、Cookie伪造

将伪造的cookie传给session后,便可使用伪造的admin身份拿到flag

NSSCTF{df845e3b-f834-405e-9a49-3f847c5341fe}

关于session的作用:

由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能。用户第一次请求后,将产生的状态信息保存在session中,这时可以把session当做一个容器,它保存了正在使用的所有用户的状态信息;这段状态信息分配了一个唯一的标识符用来标识用户的身份,将其保存在响应对象的cookie中;当第二次请求时,解析cookie中的标识符,拿到标识符后去session找到对应的用户的信息。

7、反序列化漏洞

我们正确的payload为:?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

传入后即可拿到flag

在php中与序列化相关的函数为:

serialize()  序列化  // 将一个类的实例(对象)序列化为字符串

unserialize() 反序列化  // 将已序列化的变量(字符串)变回原来 PHP的值

8、Vim文件泄露

Post传参后拿到flag

NSSCTF{b8776bdb-b398-4544-b006-72ee55c5a531}

使用 vim -r 来查看当前目录下的所有swp文件;也可以使用 vim -r filename 来恢复文件,这样上次意外退出没有保存的修改就会覆盖文件。

9、HTTP协议

访问拿到的路径

在源码里找到另一个路径,继续访问,拿到flag

NSSCTF{d295698b-50ae-47ed-8393-2463797931d3}

10、基于W1R3S的Web渗透测试

前期我们是需要先进行信息收集,确定靶机IP,以及对靶机进行端口扫描,确定开放的端口和服务,探测出可能存在的漏洞,这对我们进行后续的渗透具有极其重要的作用。

从最初不知道登录密码

到最后彻底拿下整台靶机

四、总结体会与防御措施

从上面的Web漏洞利用中我们可以看到:Web安全漏洞的危害之大,而且无处不在,只要稍不注意就有可能导致个人信息的泄露。在Internet大众化及Web技术飞速演变的今天,在线安全所面临的挑战日益严峻,伴随着在线信息和服务的可用性的提升,以及基于Web的攻击和破坏的增长,安全风险达到了前所未有的高度。上面的CTF赛题大多其取材于真实环境渗透,只说一句话:开发和安全缺一不可!

1、针对注入漏洞,我们通常可以通过适当、及时地检查与清理用户的输入,来防范此类威胁,严格限制web应用的数据库的操作权限,给用户提供仅能满足需求的最低权限,从而最大限度的减少注入攻击对数据库的危害。

2、针对身份验证相关的漏洞,我们可以通过实施健全的会话管理控制、多因素身份验证、限制和监视失败的登录尝试,避免使用默认密码,进行弱密码检查,使用服务端,安全,内置的会话管理,确保对于每次登录生成随机会话ID,会话ID不应该在URL中,且应该及时销毁。

3、针对敏感数据泄漏,我们可以对系统处理、存储或传输的数据分类,并根据分类进行访问控制,对于没必要存放的、重要的敏感数据,应当尽快清除,或者通过PCI DSS标记或拦截。未存储的数据不能被窃取。

4、针对受损的访问控制带来的未经授权的信息泄露、数据被直接修改或破坏,我们可以通对前后端同时对用户输入信息进行校验,双重验证机制,执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限。

5、针对不安全的反序列化漏洞,我们需要对任何序列化对象进行完整性检测,比如数字签名以防止数据篡改或恶意对象,限制或监管入的和出的来自反序列化的容器或服务器的网络链接。

6、针对任意文件上传和读取下载,我们通过设置白名单,即只能下载/访问某个目录下的文件,权限给到最低,正则严格判断用户输入参数的格式,php.ini配置open_basedir限定文件访问范围。

注:Copyright © [2023] [Myon⁶]. All rights reserved.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字孪生开发技术分析

数字孪生的开发涉及多个技术领域&#xff0c;包括计算机科学、数据科学、人工智能和工程等。以下是数字孪生开发中常用的一些关键技术&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.建模和仿真&am…

centos(linux)安装jenkins

官网&#xff1a;https://pkg.jenkins.io/redhat/ 安装官网进行操作&#xff1a; sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key若出现如下错误&#xff1a; …

智能优化算法应用:基于人工水母算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工水母算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工水母算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工水母算法4.实验参数设定5.算法结果6.…

Axure

目录 一. 交互 1.2 交互事件 二. 情形 2.1 应用场景 三. 案例 3.1 ERP登录 3.2 ERP页面跳转 一. 交互 交互事件是指在用户界面中发生某些操作或行为时&#xff0c;触发相应的响应或动作。在设计网页、应用程序或其他用户界面时&#xff0c;交互事件通常用于实现交互式功…

R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup

cli_abort(message,...,call .envir,.envir parent.frame(),.frame .envir ) 我先从那些不需要下大力气理解的参数入手&#xff1a; 参数【.envir】&#xff1a;进行万能表达式编译的环境。 参数【.frame】&#xff1a;抛出上下文。默认用于 .trace_bottom&#xff0c;当 .…

WordCloud—— 词云

【说明】文章内容来自《机器学习入门——基于sklearn》&#xff0c;用于学习记录。若有争议联系删除。 wordcloud 是python的第三方库&#xff0c;称为词云&#xff0c;也成文字云&#xff0c;可以根据文本中的词频以直观和艺术化的形式展示文本中词语的重要性。 依赖于pillow …

Instruct-NeRF2NeRF:通过用户指令编辑 NeRF 三维场景

Haque A, Tancik M, Efros A A, et al. Instruct-nerf2nerf: Editing 3d scenes with instructions[J]. arXiv preprint arXiv:2303.12789, 2023. Instruct-NeRF2NeRF 是 ICCV 2023 Oral 论文&#xff0c;首次将图像编辑任务从二维提升到三维。 Instruct-NeRF2NeRF 所做的任务…

b站高可用架构 笔记

b站高可用架构 关键点&#xff1a;主机房&#xff0c;多活和多活机房 参考文章&#xff1a;bilibili技术总监毛剑&#xff1a;B站高可用架构实践 1. 前端和数据中心负载均衡 前端负载均衡(动态CDN):最近节点、带宽策略、可用服务容量 数据中心负载均衡:均衡流量、识别异常节…

微软近日推出了Phi-2,这是一款小型语言模型,但其性能却十分强大

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

数据的个人视角:数据可视化的意义

当谈论到数据可视化对个人用户的实用价值时&#xff0c;很多人可能会想到它仅适用于企业或专业领域。然而&#xff0c;数据可视化对个人用户同样具有重要的实用价值。本文将从可视化从业者的角度出发&#xff0c;简单说说数据可视化对个人用户的实用价值。 首先&#xff0c;数…

【大数据存储与处理】第四次作业

一. 简答题&#xff08;共8题&#xff09; 1. (简答题)此题为mongodb操作题&#xff0c;使用在线平台或分享的虚拟机平台软件&#xff0c;写出命令&#xff0c;并把结果截图一起提交。对testdb数据库items集合进行聚合分组&#xff0c;然后在统计卖出的平均数量&#xff08;“…

云存储在 AIOps、数字人以及训练推理场景的最佳实践

云布道师 在以 AIGC 大模型为代表的技术新浪潮中&#xff0c;存储作为数据基础设施&#xff0c;将在数据采集、训练与推理、应用部署、内容审核与协同等多个关键环节发挥重要作用&#xff0c;助力 AI 创新加速。据 IDC 调研显示&#xff0c;67% 的中国企业已经开始探索 AIGC 在…

【PIE-Engine 数据资源】全球2.5分分辨率累积降水量数据集

文章目录 一、 简介二、描述三、波段四、示例代码参考资料 一、 简介 数据名称全球2.5分分辨率累积降水量数据集时间范围1961年- 2018年空间范围全球数据来源worldclim代码片段var images pie.lmageCollection(WORLDCLIME/GLOBAL_PREC_MONTH") 二、描述 全球2.5分分率果…

Linux笔记---用户和权限管理基本命令介绍

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 ​编辑 前言&#xff1a; 命令&#xff1a; whoami&#xff1a; passwd&#xff1a; useradd&#xff1a; userdel&#xff1a; chm…

直升机产权共享,让飞行成为触手可及的梦想!

你曾想过能开直升机&#xff1f;甚至想拥有一架直升机&#xff1f;那种飞跃人生的心境&#xff0c;翱翔蓝天白云。可面临居多疑问&#xff0c;比如&#xff1a;学开直升机需要怎样的条件&#xff08;年龄、学历、费用、学习内容及周期等&#xff09;?到哪里学/买直升机比较安全…

【C语言】自定义类型之联合和枚举

目录 1. 前言2. 联合体2.1 联合体类型的声明2.2 联合体的特点2.3 相同成员的结构体和联合体对比2.4 联合体大小的计算2.4 判断当前机器的大小端 3. 枚举3.1 枚举类型的声明3.2 枚举类型的优点3.3 枚举类型的使用 1. 前言 在之前的博客中介绍了自定义类型中的结构体&#xff0c;…

利用Spark构建房价分析与推荐系统:基于58同城数据的大数据实践

利用Spark构建房价分析与推荐系统&#xff1a;基于58同城数据的大数据实践 基于Spark的房价数据分析预测推荐系统引言技术栈功能概述项目实现1. 数据爬取与处理2. 大数据分析与可视化3. 房价预测模型4. 协同过滤推荐系统5. Web应用开发6. 数据管理与用户管理 总结与展望 基于Sp…

常见的Web攻击手段分析总结,实战案例:通过 X-Forwarded-Host 的密码重置令牌泄漏

常见的Web攻击手段分析总结,实战案例:通过 X-Forwarded-Host 的密码重置令牌泄漏。 常见的 Web 攻击手段主要有 XSS 攻击、CSRF 攻击、SQL 注入攻击、DDos 攻击、文件漏洞攻击等。这几种攻击方式的防护手段并不复杂,却还是有很多企业遭受了该攻击,朔源到头,还是因为人为的…

【实时绘画】krita + comfyUI 实时绘画 儿童海报

1&#xff1a;打开comfyUI 2: 打开krita 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git

Gamma分布

分布的概率密度为&#xff1a; 其中参数 分布的数学期望等于&#xff0c;方差等于。