抓包分析-wireshark
WireShark是一个网络封包分析软件,可以直接与网卡进行数据报文交互。是一个非常强大的抓包工具。
软件的安装
个人环境为:Manjaro Linux X86_64
1yay -S wireshark-qt
我们需要使用Root权限去打开WireShark,否则会无法抓取到我们网卡的网络封包,例如
我们有两种方式的通过Root权限打开WireShark,第一种是在命令行通过sudo wireshark &执行,但是控制台关闭WireShark也会关闭。
第二种是使用sudo的图形化版本gksu,然后在wireshark的.desktop内修改Excu
安装gksu
1yay -S gksu
打开/usr/share/applications,用编辑器打开WireShark的快捷方式,将Excu一行修改成这样
1Exec=gksu wireshark %f
接下来我们打开命令行会看到这样的窗口
证明成功,输入密码打开即可看到我们的网卡。
基础使用
首先我们选到捕获-选项
这里会展示出所有的接口,展开接口我们会看到我们的ip地址,通过这个地址,我们可以找到我们的网卡 ...
网络安全学习(6):中间人攻击
主要教程为利用Kali系统模拟攻击者,利用中间人的攻击手段获取用户登录的用户与密码。
(请勿在无授权情况下测试!)
环境介绍
设备:均在虚拟环境下
WindowsServer2022 ---- 模拟WEB及FTP服务器
Windows10 ---- 模拟客户机
Kali ---- 攻击机
工具:ettercap
设备拓扑结构:三台设备在同一网络下,互相可以通讯
攻击基本原理
利用的ARP协议漏洞:后到达的ARP协议包会更新ARP缓存表
ARP协议原理:(为了获取接受目标的MAC地址)
发送机发送ARP广播请求
目标机发送ARP单播应答
攻击人通过发送虚假的ARP应答实现ARP缓存投毒,而其他设备无法对其进行身份(真伪)验证
因此中间人攻击又称ARP欺骗攻击。
流程
调整网络
首先我们开启我们的虚拟机,并设置到同一网段内:
Windows10 ----- 10.1.1.1
KaliLinux ----- 10.1.1.2
Windows2022 ----- 10.1.1.3
搭建F ...
网络安全学习(5):AWVS
Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,是一个针对web服务的扫描工具。
新版的AWVS是通过网页的方式使用,前后端分离,因此可以用Docker部署,这里我就选择使用Docker部署的方式来安装。
使用Docker部署
拉取下载镜像
1docker pull secfa/docker-awvs
创建容器,并将3443端口映射到物理即的13443端口
123docker run -it -d -p 13443:3443 secfa/docker-awvs//Windows下可能需要添加一个参数docker run -it -d --cap-add LINUX_IMMUTABLE -p 13443:3443 secfa/docker-awvs
访问awvs,在浏览器中打开https://127.0.0.1:13443(其中127.0.0.1可以替换为Docker所在服务器的地址)
由于https的原因,首次访问这个网页会弹出不信任,直接无视访问即可。若是Google Chrome可能相对更麻烦一些,建议自 ...
网络安全学习(4):KPI
PKI
PKI:Public Key Infrastructure 公钥基础设施
作用:通过加密技术和数字签名保证信息的安全
组成:公钥加密技术、数字证书、CA、RA
信息安全三要素
机密性
完整性
身份验证/操作的不可否认性
用到PKI的领域
SSL/HTTPS
IPsecVPN
公钥加密技术
作用:实现对信息加密、数字签名等安全保障
加密算法:
对称加密算法(DES、3DES、AES…):加密与解密的密钥一致
例:x+5=y,x是原数据/原文,y是密文;其加密与解密密钥都是5
非对称加密算法(RSA…)
通信双方各自产生一对公私钥
双方交换公私钥
公钥与私钥为互相加解密关系
公私钥不可互相逆推
数字签名:用自己的私钥对摘要(MD5)加密得出的密文。
数字证书
证书是用于保证公钥的合法性,格式遵循X.509标准。
数字证书包含的信息有:
使用者的公钥值
使用者的标识信息(名称、电子邮件等)
有效期(证书的有效时间)
颁发者标识信息
颁发者的数字签名
数字证书由权威公正的第三方机构,即CA签发。
Manjaro和ArchLinux下安装VirtualBox过程以及踩坑
安装VirtualBox时,遇到一个启动虚拟机卡在20%的问题。翻了ArchLinux的BBS和Wiki,可算找到了解决方案,疑似是11代Intel的锅。
安装过程
首先通过uname -r查看系统的内核版本,例如
16.1.19-1-MANJARO
可以查看到我的内核版本是6.1,接下来使用pacman安装VirtualBox
1sudo pacman -S virtualbox
会出现很多选项,选择对应的内核版本即可。接下来我们安装vbox的拓展包
1sudo pacman -Ss virtualbox-ext-oracle
然后我们需要重启或者使用命令载入vboxdrv模块
1sudo modprobe vboxdrv
问题出现
当我们打开vbox,创建虚拟机,启动虚拟机时,发现虚拟机的界面卡在了正在启动虚拟机,然后查看vbox页面,卡在了20%。
(我似乎忘记留存问题的图了,后面复刻问题后再补上)
经过我查找问题,发现问题似乎出现在11代Intel CPU上,接下来是在BBS和Wiki发现解决问题链接:
https://wiki.archlinux.org/title/Virt ...
网络安全学习(3):DHCP
DHCP
DHCP具体在这里不会赘述,主要讲DHCP原理、部署、安全。
DHCP原理
可以称为DHCP租约过程,分为四个步骤
客户机发生DHCP Discovery(发现)广播包
客户机广播请求IP地址(包含客户机的MAC地址)
服务器响应DHCP Offer广播包
服务器响应提供IP地址(无子网掩码、网关等参数)
客户机发送DHCP Request广播包
客户机选择IP(也可认为确认使用哪个IP)
发送DHCP ACK(确认)广播包
服务器确定租约,并提供网卡详细参数IP、掩码、网关、DNS、租期等
DHCP续约
当50%过后,客户机会再次发送DHCP Request包进行续约;
若服务器未响应,则会继续使用且在87.5%再次发送进行续约,如果仍然无响应,则释放IP地址,重新进行DHCP租约过程获取IP地址。
当无任何服务器响应时,会自动给自己分配一个169.254.x.x/16(无效IP地址)。
部署DHCP服务器
使用的服务器版本:Windows Server 2022
首先我们打开设置,找到应用,选择程序与功能(相关设置)
我们选择启用或关闭Windows功能 ...
渗透测试学习(2):在docker下搭建Kali-Linux环境
概述
先来谈谈这种方式的优缺点
优点:
可以不用运行额外的完整操作系统
可以直接在当前终端启动Kali,并使用其工具
缺点:
无法直接访问硬件,导致部分工具使用相当复杂
达到的效果:
过程概述:
从docker拉取kali-linux官方提供的映像kalilinux/kali-rolling;
构建一个容器,进入容器的shell,更新软件源,并下载kali linux的工具包;
基于我们作出更改的容器,创建新的映像,我们的映像中将包含更新和工具包;
对Kali内部分数据目录映射到Docker Volumes,每次使用完Kali后,都会自动删除容器,并利用我们镜像和Volumes随时重新创建;
编写启动脚本,并将其设置在环境变量中。
完整过程
拉取Kali Linux 的官方Docker映像
1docker pull kalilinux/kali-rolling
基于该映像构建一个容器,并进入shell
1docker run -ti kalilinux/kali-rolling
这时候我们开启的这个kali仅仅是一个骨架,不包含任何工具,此时我们要使用apt工具, ...
数据库系统概论复习
视频来自https://www.bilibili.com/video/BV1Bq4y1Y7GC
关系理论
函数依赖
函数依赖指的是X可以推导出Y,即Y依赖于X,记作X->Y
非平凡的函数依赖:X→Y,Y⊄X{X}\rightarrow{Y},{Y}\not\subset{X}X→Y,Y⊂X,在大多数情况下没有指明的函数依赖都是非平凡的函数依赖
平凡的函数依赖:X→Y,Y∈X{X}\rightarrow{Y},{Y}\in{X}X→Y,Y∈X,几乎没有什么作用,一般某个集合总能推导出其子集,即平凡的函数依赖
完全函数依赖:X→YX\rightarrow{Y}X→Y,并且对于X的任意真子集X',都有Y不依赖于X',则称之为完全函数依赖;
个人理解就是,当Y依赖于X时,仅有X本身可以推导出Y,X的任意部分都不能单独推导出Y
部分函数依赖:Y不完全函数依赖于X。即作X-P->Y(P在箭头上)。例如A→CA\rightarrow{C}A→C,又有AB→C{AB}\rightarrow{C}AB→C,那么C就是部分依赖于AB。
这种情况会导致数据冗余,因为A本身就可以推导出C, ...
go-zero框架学习笔记(1):环境配置
Goctl安装
goctl是go-zero框架下的代码生成工具。其功能有:
api服务生成
rpc服务生成
model代码生成
模板管理
go get 安装goctl
12345# Go 1.15 及之前版本GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero/tools/goctl@latest# Go 1.16 及以后版本GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest
通过此方式安装,会自动安装在$GOPATH/bin,如果忘了自己的$GOPATH在什么地方,可以通过
1go env
查找到对应的目录。
添加到环境参数
若原先设定过$GOPATH,应该是不需要这一步。由于我是通过pacman安装的Go,因此没有设定过。
以我本人所用的zsh终端举例,使用任意文本编辑工具(vim、vi)打开~/.zshrc,添加如下一行 ...
golang基础笔记(11):泛型
泛型
在Go 1.18版本中,添加了对泛型的支持。泛型是一种独立于所使用的特定类型的编写代码的方法。使用泛型可以编写出适用于一组类型中的任何一种的函数和类型,便利了代码的编写。
泛型的作用
假设我们有一个调换int参数的函数,现在我们需要一个调换float参数的函数,没有泛型时,我们需要将相同的逻辑、不同的类型参数的函数重复多遍。
1234567func excInt(a, b int) (int, int) { return b, a}func excFloat(a, b float32) (float32, float32) { return b, a}
但那是有了泛型,就可以很方便的编写出适用所有元素类型的“普适版”的函数
123func exchange[T any](a, b T) (T, T) { return b, a}
泛型语法
泛型为Go语言添加了三个新的重要特性:
函数和类型的类型参数。
将接口类型定义为类型集,包括没有方法的类型。
类型推断,它允许在调用函数时在许多情况下省略类型参数。
这里我们着重讲 ...