计算机网络学习-5
数据链路层概述
基本概念结点:主机、路由器。
链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
帧:链路层的协议数据单元,封装网络层数据报。
功能概述数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。
功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
功能三:组帧。
功能四:流量控制。
功能五:差错控制(帧错/位错)
封装成帧
透明传输透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须 ...
vm2沙箱逃逸
沙箱逃逸的概念
Nodejs命令执行
vm沙箱逃逸
vm模块的使用
利用沙箱来执行命令
vm绕过Object.create(null)
vm2沙箱逃逸
题目分析
[HFCTF2020]JustEscape
沙箱逃逸的概念
沙箱(sandbox)就是创建一个单独的运行代码的环境,和主机进行隔离,这样代码产生的危害就不会影响到主机,沙箱的工作机制主要是依靠重定向,将恶意代码的执行目标重定向到沙箱内部。
沙箱(sandbox)和 虚拟机(VM)和 容器(Docker)之间的区别:sandbox和VM使用的都是虚拟化技术,但二者间使用的目的不一样。沙箱用来隔离有害程序,而虚拟机则实现了我们在一台电脑上使用多个操作系统的功能。Docker属于sandbox的一种,通过创造一个有边界的运行环境将程序放在里面,使程序被边界困住,从而使程序与程序,程序与主机之间相互隔离开。在实际防护时,使用Docker和sandbox嵌套的方式更多一点,安全性也更高。
Nodejs中,通过vm模块来创建一个沙箱,但vm模块的漏洞较大,后续就出现了升级版的vm2,对vm做了优化,但是在旧版本仍然存在 ...
计算机网络-4
网络层概述这里放个导图
网络层主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。
网络层传输单位是数据报。
网络层的功能
功能一:路由选择与分组转发(选择最佳路径)
功能二:异构网络互联
功能三:拥塞控制
若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施缓解这种拥塞;
拥塞控制有两种方法:
开环控制:这是静态的,即提前考虑网络会产生拥塞的各种情况并做好准备
闭环控制:这是动态的,即在网络运行的时候进行实时调整
IP数据报格式IP协议在网络层的占比很大
ip数据包的整体结构
数据部分就是传输层的报文段
具体格式
IP数据报分片最大传送单元MTU
链路层数据帧可封装的数据的上限
以太网的MTU是1500字节
链路层的数据帧的数据部分就是IP分组,所以IP分组大小不能超过MTU,以太网就是不能超过1500字节;如果超过了MTU就要采取数据报分片的方法。
分片
分片的就和上面数据报中的标识、标志、片偏移三个部分相关
标识:同一数据报的分片使用同一标识。比如有三个数据报他们的标识都是888,那他们就是属于同一个 ...
vscode配置Linux开发环境
VSCode配置wsl开发环境在vscode上使用wsl进行开发环境就比较简单,我这里用的是Ubuntu的wsl
首先检查一下wsl里面有没有gcc和g++编译器
g++ -vgcc -v
如果没有就执行下面命令安装
sudo apt-get update #更新软件包列表sudo apt-get install build-essential gdb #安装 GNU 编译器工具和 GDB 调试器
然后去创建一个项目文件夹,在需要vscode打开的文件夹下输入
code .
就会自动开启一个vscode
左下角就会显示wsl的连接
随便写个cpp文件,然后我们在终端就可以进行编译了
从vscode中启动wsl
只需要安装两个remote扩展就可以了
然后命令输入wsl即可连接
如果有多个发行版想要指定的话就选这个
另外不想命令行编译调试的话也可以直接在为wsl安装code runner和c++扩展即可
VSCode配置远程服务器连接首先安装好这个插件
然后去config文件配置ssh文件
要先在本机使用如下命令生成密钥
ssh-keygen -t rsa ...
计算机网络学习-3
传输层概述传输层学习两种协议,TCP和UDP协议
TCP协议的作用:
可靠传输
流量控制
拥塞控制
传输层是只有主机才有的层次,传输层可以为应用层提供服务,也可以使用网络层的服务
传输层的功能:
传输层提供进程和进程之间的逻辑通信。网络层则提供主机之间的逻辑通信。
复用和分用。
传输层对收到的报文进行差错检测
传输层有两种协议
传输层的寻址与端口复用:应用层所有的应用进程都可以通过传输层再传输到网络层。
分用:传输层从网络层收到数据后交付指明的应用进程。
端口号标识主机中的应用进程。
端口号长度为16bit,所以能表示的端口号数量为65535个。
端口号的分类:
所以有些程序都会有默认端口号,比如HTTP的80端口,HTTPS的443端口,这里列举出一些协议的端口号:
在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程。
套接字socket=(主机IP地址,端口号)
UDP协议UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP的主要特点
UDP是无连接的,减少开销和发送数据之前的 ...
计算机网络学习-2
应用层应用层对应用程序的通信提供服务。
应用层协议定义:
应用进程交换的报文类型,请求还是响应?
各种报文类型的语法,如报文中的各个字段及其详细描述字段的语义,即包含在字段中的信息的含义。
进程何时、如何发送报文,以及对报文进行响应的规则。
应用层的功能:
文件传输、访问和管理
电子邮件
虚拟终端
查询服务和远程作业登录
应用层重要协议
FTP,SMTP、POP3, HTTP, DNS
网络应用模型
客户/服务器模型(C/S)
P2P模型(Peer-to-peer)也叫对等模型
DNS系统域名域名从左到右级别逐渐升高,最右边的叫做顶级域名
根
根指的是顶级域名右边的一点,所以完整的域名写法应该是www.xxx.com.,从根后面才是顶级域名
顶级域名
反向域名即通过IP地址来反向解析出域名
二级域名
域名树
域名可以有很多级,比如学校的域名就有三级、四级等等
域名服务器
本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。
根域名服务器:知道所有的域名,就是知道顶级 ...
计算机网络学习(1)
这里根据王道考研视频来学习,啃书太折磨了()
性能指标速率
带宽计算机网络中,带宽用来表示网络的通信线路传送数据的能力,通常是指单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。单位是“比特每秒”,b/s,kb/s,Mb/s,Gb/s。网络设备所支持的最高速度。
也就是理论上的最高速率。
带宽增大也就是发送的速率变快了,并不影响传播的速率。
吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。单位b/s,kb/s,Mb/s等。
吞吐量受网络的带宽或网络的额定速率的限制。
时延指数据(报文/分组/比特流)从网络(或链路)的一端传送到另一端所需的时间。也叫延迟或迟延。单位是s。
时延又分为4种:
发送时延(传输时延):发送时延=数据长度/信道带宽(发送速率)
传播时延:取决于电磁波传播速度和链路长度,传播时延=信道长度/电磁波在信道上的传播速率
排队时延:等待输出、输入链路可用(例如排队等安检)
处理时延:检错找出口(例如安检时的过程要的时间 ...
buu做题记录1
[RoarCTF 2019]Easy Java题目是一个登陆界面,试了一下admin/admin没反应
点击帮助文档出现一个java语句java.io.FileNotFoundException:{help.docx}
应该就是啥都没有,查看源码他的链接是这样的
没啥思路去看别的师傅的wp,这里涉及到一个WEB-INF/xml的文件泄露,因为这题的环境是java的web应用
参考文章:https://www.cnblogs.com/darkcyan/p/17668377.html
WEB-INF知识
WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
这是一些主要敏感目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet cla ...
Windows 提权
Windows权限划分在Windows中,有User、Administrator、System、TrustedInstaller这四种用户权限,其权限从左到右依次升高。
权限提升分为下面两类:
纵向提取:低权限用户获得高权限用户的权限
横向提权:获得同级别角色的权限
常用提权方法
Windows系统内核溢出漏洞提权
错误系统配置提权
数据库提权
等等~
Windows系统内核溢出漏洞提权溢出漏洞是一种计算机程序的可更正性缺陷。溢出漏洞的全名:缓冲区溢出漏洞。因为它是在程序执行的也是攻击者时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一,入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可!修改内存中变量的值,甚至可以劫持进程,执行恶意代码,最终获得主机的控制权。利用Windows系统内核溢出漏洞提权是一种很通用的提权方法,攻击者通常可以使用该方法绕过系统中的所有安全限制。攻击者利用该漏洞的关键是目标系统有没有及时安装补丁,如果目标系统没有安装某一漏洞的补丁且存在该漏洞的话,攻击者就会向目标系统上传本地溢出程序,溢出Adm ...
go get小坑
gin框架安装尝试本地去跑一个go项目时,在导入包时提示找不到路径找不到对应的包
先用下列命令开启了环境变量GO111MODULE=on,不然go get不了
go env -w GO111MODULE=on
然后get相应的包
go get -u github.com/chromedp/chromedpgo get -u github.com/gin-gonic/gingo get -u golang.org/x/net/html
再go build源码时就出现了下面的错误
main.go:13:2: cannot find package "github.com/chromedp/chromedp" in any of: D:\go\src\github.com\chromedp\chromedp (from $GOROOT) C:\Users\86189\go\src\github.com\chromedp\chromedp (from $GOPATH)
查看环境变量用下面命令查看go环境变量
go env
发现gopath没有指向我安装时 ...