TL;DR: 使用VS Code中的 markdown.copyFiles.destination 配置项, 可以设置粘贴图片的位置。
VS Code内的markdown编辑器应该算是比较好用的, 但是有一个问题一直困扰着我, 就是在编辑markdown文件时, 粘贴图片的位置问题。默认情况下, VS Code会将粘贴的图片放在markdown文件的同级目录下, 这样会导致markdown文件的目录结构变得非常混乱, 不利于管理。
其实只需要简单的设置一下, 就可以解决这个问题。
在VS Code中, 按下Ctrl + ,, 打开设置界面。
在搜索框中输入markdown.copy, 找到Markdown> Copy Files:Destination。
新增配置项 key 为 **/*.md, value 为 你的目标路径。比如我想将图片放在 assets 目录下 markdown文件同名的目录下, 那么我就可以设置为 assets/${documentBaseName}/${fileName}, 其中 ${docume ...
1. VLAN介绍1.1. VLAN前置概念
碰撞域, 广播域, 广播风暴:
碰撞域:使用集线器连接而成的以太网是一个碰撞域, 即收到的所有以太网数据帧会被集线器无脑广播到网络中除接收口以外的每个端口, 原因是集线器工作在物理层, 没有识别上层数据链路层的以太网数据帧(包含了MAC地址)结构的能力。
广播域:使用交换机连接而成的以太网是一个广播域, 即收到的以太网广播帧会被交换机转发到除接收口以外的每个端口, 原因是交换机工作在数据链路层, 具有识别MAC地址的能力, 因此不会和集线器一样将单播帧也广播出去。
广播风暴: 同一个网络中由于充斥着大量的广播信息而导致占用网络带宽使正常网络信号无法流通。出现广播风暴后只能拔网线或将交换机断电, 因为交换机工作在数据链路层, 而数据链路层协议并没有数据帧最大生存时间(TTL)相关协议, 因此路由环路的出现, 就会使广播帧永久保留在环路中, 使得交换机不断重复广播, 造成网络拥塞。网络中最常使用广播帧的协议有 ARP, DHCP, IPX/SPX等。
路由器隔离广播域, 交换机隔离碰撞域:
通常为了扩展以太网的范围, 会将多台 ...
历史在1983年美国公布橘皮书以后, 人们开始意识到除了信息保密的需要之外, 信息在存储、处理和传输的过程中不会被未经授权者进行插入、删除和修改(完整性要求), 以及在需要使用的时间、地点可以保证提供使用(可用性要求), 也是信息安全的重要、基本需求。完整性和可用性需求就是保密性以外的两个基本的信息安全属性。
保密性(Confidentiality)保密性(Confidentiality)确保资料传递与存储的隐密性, 避免未经授权的用户有意或无意的揭露资料内容。举个🌰:假设你写了一封情书给你暗恋的人, 你希望这封情书只能被你的暗恋对象看到, 这就是保密性。
完整性(Integrity)数据完整性(Integrity)代表确保资料无论是在传输或存储的生命周期中, 保有其正确性与一致性。举个🌰:假设你写了一封情书, 让你的好基友转交给你暗恋的人, 你希望这封情书从头到尾不会被改动, 不会出现任何损坏, 这就是完整性。
可用性(Availability)在信息安全领域, 可用性(Availability)是成功的信息安全项目应具备的需求, 意及当用户需透过信息系统进行操作时, 资料与服务 ...
Swap的概念swap分区的作用可简单描述为: 当系统的物理内存不够用的时候, 就需要将物理内存中的一部分空间释放出来, 以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序, 这些被释放的空间被临时保存到swap分区中, 等到那些程序要运行时, 再从swap分区中恢复保存的数据到内存中。这样, 系统总是在物理内存不够时, 才进行swap分区交换。其实, swap分区的调整对Linux服务器, 特别是Web服务器的性能至关重要。通过调整swap分区, 有时可以越过系统性能瓶颈, 节省系统升级费用。
建议划分的Swap分区大小分配太多的swap分区会浪费硬盘空间, 而swap分区太小, 如果系统的物理内存用完了, 系统就会运行得很慢, 但仍能运行;如果swap分区用完了, 系统就会发生错误。例如, Web服务器能根据不同的请求数量衍生出多个服务进程(或线程), 如果swap分区用完了, 则服务进程无法启动, 通常会出现application is out of memory的错误, 严重时会造成服务进程的死锁。因此, swap分区的分配是很重要的。
通常情况下, ...
1. SSH客户端配置1.1. 生成SSH密钥对:ssh-keygen -t ed25519 -b 4096 -C "这是注释" -f ~/.ssh/test/key
-t rsa: 指定密钥的加密算法为ed25519, 它相比较于rsa有更高的安全性以及更好的性能。
-b 4096:指定密钥的位数, 不指定则使用默认的2048位。
-C "这是注释":为密钥添加注释。不添加则默认使用当前用户名和主机名组成的邮件地址, 比如 zhangsan@Ubuntu。
-f ~/.ssh/test/key:指定密钥文件的路径和名称, 不指定则会在执行命令后要求输入。
1.2. 配置~/config文件
一个简单的例子: 为Github指定使用的私钥
12Host github.com IdentityFile [私钥路径]
不要试图为github.com设置一个别名, 会导致无法推送代码, 并提示权限错误!
验证连接: ssh git@github.com -T
-T: 禁止分配伪终端, 防止出现”PTY allocation re ...
参考: https://nodejs.org/en/download/package-manager#debian-and-ubuntu-based-linux-distributions
开源地址: https://github.com/nodesource/distributions?tab=readme-ov-file#debian-and-ubuntu-based-distributions
1. 安装建议安装LTS版本: Node.js v20.x:
12curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\sudo apt-get install -y nodejs
检查版本:
12node -vnpm -v
2. NPM 换源推荐使用 nrm 来管理镜像源。设置教程参考此文章:https://www.51shizhi.com/article/a/nrm-npm-huanyuan
3. 更新12sudo apt upgrade nodejs # 更新 nodejs 软件 ...
网络安全
未读
File Inclusion,即文件包含(漏洞),是指服务器在开启 allow_url_include 选项后,可通过 include()、require() 等函数利用 URL 动态包含文件。若未严格审查文件来源,可能导致任意文件读取或任意命令执行。此类漏洞分为本地文件包含漏洞和远程文件包含漏洞,后者源于 allow_url_fopen 选项开启(允许通过 URL 打开文件)。
1. Low1.1. 本地文件包含默认有3个内置的php文件可执行:
选中 file2.php 进行执行:
输出了 Nick Helm 说过的一句话,同时地址栏上显示:http://192.168.217.130/dvwa/vulnerabilities/fi/?page=file2.php
该URL末尾的查询字符串?page=file2.php表示当前加载的页面是file2.php,这意味着服务器根据这个参数加载或渲染了 file2.php 文件的内容。猜测通过更改 page 参数的值,可能会访问到内置的3个文件以外的文件。
将参数值设为/etc/passwd,构造url并访问: http://19 ...
网络安全
未读Brute Force,即暴力破解,是指黑客利用密码字典,使用穷举法猜解出用户口令。
1. Low1.1. 手工注入(万能密码)输入DVWA的默认用户名和密码admin/password,查看登录结果:
显示了欢迎横幅以及图片,说明登录成功。
尝试输入随机输入用户名和密码,查看登录结果:
由上图可知,输入合法账号密码后,如果账号不正确,会返回Username and/or password incorrect.
由于输入合法数据后得到的信息较少,因此需要进一步测试,尝试将用户名输入为单引号'(单引号通常用于字符串的包围),密码输入123,查看登录结果:
由返回结果可知服务端使用的数据库为MySQL,并且还显示了一串32位16进制字符,尝试使用在线MD5解密工具,查看解密结果:
解密后的结果等于输入的密码123,说明数据库中存储的密码为非明文的MD5加密值。
继续使用万能密码'OR 1 = 1 #进行登录,看能否成功:
万能密码存在的原理是因为,通常在进行登录验证的过程中需要进行将用户输入的账号和密码与数据库中存在的账号和密码进行比对,使用的SQL语 ...
网络安全
未读SQL Injection(Blind)概念:SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。目前网络上现存的SQL注入漏洞大多是SQL盲注。
手工盲注思路:手工盲注的过程,就像你与一个机器人聊天,这个机器人知道的很多,但只会回答“是”或者“不是”,因此你需要询问它这样的问题,例如“数据库名字的第一个字母是不是a啊?”,通过这种机械的询问,最终获得你想要的数据。盲注分为基于布尔的盲注、基于时间的盲注以及基于报错的盲注,这里由于实验环境的限制,只演示基于布尔的盲注与基于时间的盲注。
手工盲注的基本步骤:1.判断是否存在注入,注入是字符型还是数字型2.猜解当前数据库名3.猜解数据库中的表名4.猜解表中的字段名5.猜解数据
Low(基于布尔的字符型盲注)首先进行正常的数据输入。根据环境提示,需要输入user ID,在文本框中输入数字1,然后提交,返回结果如下图所示:
由上图知,在输入正确数据返 ...
网络安全
未读
初学SQL注入时建议开一个SQL的图形工具(如SQLyog)用来验证各个命令的具体作用,方便理解。
1. Low1.1. 手工SQL注入
判断是否存在数值型或字符型注入:
正常输入1,输出admin用户的姓名。
输入 1+1 ,输出结果同输入1,说明存在字符型注入。
输入1'#,输出结果同样同输入1,再次说明存在字符型注入。
猜解SQL查询语句中的字段数:
输入 1' order by 2#,查询成功。
输入 1' order by 3#,报错,说明执行的SQL查询语句中只有两个字段,即这里的First name、Surname。
确定显示的字段顺序:
输入 1' union select 1, 2# ,查询成功,说明2个字段都会显示。
理解select 1,2:例如一个网站的参数传递执行的查询有3个字段,很可能这些字段不是都显示在网页前端的,假如其中的1或2个字段的查询结果是会返回到前端的,那么我们就需要知道这3个字段中哪两个结果会回显,这个过程相当于找到数据库与前端显示的通道。如果我们直 ...