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没有指向我安装时 ...
git学习
Git学习这里还有一个很好的总结网站:https://mp.weixin.qq.com/s/Q_O0ey4C9tryPZaZeJocbA
概述
git在实际开发中的运用场景非常多,比如:备份,代码还原,协同开发,追溯问题代码的编写人和时间。
==版本控制器的方式==
a.集中式版本控制工具,比如:svn,cvs
b.分布式版本控制工具,比如:git
二者的差别很大,集中式中,版本库是存放在中央服务器中的,需要的代码都是提交到中央服务器或从中央服务器下载;分布式中则没有中央服务器,会有一个共享服务器,每台电脑都有自己的本地仓库存放着自己的一个完整的版本库。
git的配置==设置用户信息==
当不跟设置信息的名称时就是查询用户的信息
给常用命令设置一个别名#创建一个.bashrc文件,在里面设置别名touch ~/.bashrcvim .bashrcsource ~/.bashrc
获取本地仓库
新建一个目录作为本地仓库,这里直接在桌面建一个git_test目录
用 git init 初始化本地 ...
反序列化
记录一下反序列化相关的函数
这篇文章蛮好的:PHP-反序列化(超细的) | spaceman’blog (gitee.io)
常见的魔术方法
__construct() :当对象被创建时触发
__destruct() :当对象被销毁时触发
__toString() :当对象被当作一个字符串使用时触发
__sleep() :序列化对象前调用(其返回需要是一个数组)
__wakeup() :反序列化恢复对象前调用,当字符串表示的对象属性个数大于真实个数时会跳过该函数执行
__call() :当调用对象不存在的方法时自动调用
__get() :从不可访问的属性读取数据时调用,或者不存在的属性
__invoke() :把一个实例对象当作函数使用时被调用
__clone() : 进行对象clone时被调用,用来调整对象的克隆行为
__callStatic() :调用不可访问或不存在的静态方法时自动调用
__isset() :在不可访问的属性上调用 isset() 或 empty() 时触发
__set() :当给不可访问或不存在属性赋值时被调用
__unset() :在 ...
配置GitHub图床
采用PicGo来配置GitHub图床转到picgo的GitHub图床设置来看配置信息:
我们新建一个仓库来存放图片,比如我开了一个image的仓库,那格式就为<github用户名>/image
分支名以前默认是master,现在是main,如果不创建其他分支填main就好
token是最重要的一步,用来识别你的身份,创建token的时候一定要勾选repo选项不然会上传失败,报各种权限不足。。。
最后在图床上面上传一张图片看是否能成功
如果要和typora一起用直接在偏好设置中设置使用picgo上传即可。