103天上岸经验贴
写在前面
考研成绩
- 初试 总分379/500,政治74,英语76,数学125,专业课104,初试排学硕第八
- 复试 总分240/300,综合面试161,英语79 最终排学硕第九
本经验贴适合人群
- 高数和线代有一定基础
- 熟悉英语语法
- 数据结构和操作系统有一定基础
我本科是电子科大软件学院,科研竞赛获奖只有中国高校计算机大赛网络技术挑战赛的国二,其他都是些文体比赛,什么“方言朗读者大赛”、“万米接力赛”、校园马拉松等等。
大一的成绩还勉强能看,排在全院10%左右,大二大三专业分流后,分到网安的大佬太多了,开启躺平模式,成绩一度下滑到50%,最后保研排名靠着师兄、工作室的同学带着拿的国二奖勉强拉回了一点,到25%,不过你电保研率只有20%,而且就我们专业人最多还没人弃保,最终与保研机会失之交臂。但是我觉得也并不可惜,毕竟自己没有在保研这条路上付出太大精力,最后能排到25%我甚至有点惊讶。
由于学院对实习的强制要求(二月份到八月份),我只能从八月份之后开始复习,真正复习开始时间是九月初返校后,之前没有复习过任何科目。
这是我在八月份结束实习后的计划,本来计划8月22号就返校开始复习,但最后还是拖延到了9月4号才返校。
所以我总共的复习时间是103天。
记一次mssql权限提升
frp用于内网转发
frp用于内网的代理转发
frp
frp是一个常见的内网穿透工具。内网穿透,即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。
而在内网中,面对内网中不出网的机器,攻击者在外网无法直接访问到,通过frp进行代理,即可实现直接访问。
frp的工作模式
frp支持很多种协议,包括tcp、udp、http、https、socks等等,当然也可以实现端口对端口的转发。
frp分为客户端和服务器端,对应于不同的系统平台有不同的版本,但是名字都以frps和frpc进行区分,对应的配置文件有两种,分别是精简版和详细版配置文件:
一般启用精简配置文件就可以。
下面以两个典型为例:
PE加载过程
PE文件结构详见上一篇博客:
概要
总共可以分为八个步骤:
1.将PE文件用ReadFile读取数据
2.根据PE结构获取镜像大小,在自己的程序中申请可读可写可执行的内存
3.将申请的空间全部填为0
4.将用ReadFile读取的数据映射到内存中
5.修复重定位
6.根据PE结构的导入表,加载所需要的dll,并获取导入函数的地址并写入导入表中。
7.修改PE文件的加载基址
8.跳转到PE的入口点处执行
数据目录
用途:
用来找到编译器加到PE文件中的信息,这些信息包含了如:
- PE程序的图标信息
- 用了哪些系统提供的函数(导入的函数)
- 为其他程序提供了哪些函数(导出的函数)
定位:
可选PE头的最后一个成员,就是数据目录,一共16个:
1 | typedef struct _IMAGE_DATA_DIRECTORY { |
分别是:导出表、导入表、资源表、异常信息表、安全证书表、重定位表、调试信息表、版权所以表、全局指针表、TLS表、加载配置表、绑定导入表、IAT表、延迟导入表、COM信息表 最后一个保留未使用。
和程序执行有关的:
和程序运行时息息相关的表有:
导出表
导入表
重定位表
IAT表
namespace
Linux Namespace
Linux Namespace
提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的Namespace
中,来实现资源隔离的目的。不同Namespace
的程序,可以享有一份独立的系统资源。目前Linux中提供了六类系统资源的隔离机制,分别是:
Mount
: 隔离文件系统挂载点UTS
: 隔离主机名和域名信息IPC
: 隔离进程间通信PID
: 隔离进程的IDNetwork
: 隔离网络资源User
: 隔离用户和用户组的IDCgroup
: 隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等)
表中前六种Namespace正是实现容器所必须的隔离技术。
Network Namespace(转)
linux 中与Network Namespace
相关的操作的子命令是 ip netns
ip netns add xx 创建一个 Namespace
1 | # ip netns add net1 |
ip netns exec xx yy 在新 namespace xx 中执行 yy 命令
1 | # ip netns exec net1 ip addr |
上面 bash 不好区分是当前是在哪个 shell,可以采用下面的方法解决:
1 | # ip netns exec net1 /bin/bash --rcfile <(echo "PS1=\"namespace net1> \"") |
每个 Namespace 在创建的时候会自动创建一个回环接口 lo
,默认不启用,可以通过 ip link set lo up
启用。
ipsec_vpn&docker
Docker环境下IPsec配置实验
选用Docker的原因
实验要求一台主机和四台虚拟机,硬件条件不允许,只好选用docker来代替。
Docker
第一次接触Docker,之前只知道Docker是一种容器化技术
Docker 和虚拟机的区别
同为虚拟技术,区别如下:
- 容器和宿主机共享kernel,即宿主机的kernel就是容器的kernel
- 虚拟机有独立的文件、进程、内存系统,而容器只是做了隔离,Docker是进程之间的隔离,而虚拟机可以实现系统级别的隔离
- 容器管理和虚拟机管理在速度上有很明显的差距,虚拟机可以做到10台/min,而Docker容器的创建是秒级别的
Docker Engine
Docker Engine属于Docker的运行层。这是一套轻量化运行时及工具组合,负责管理容器、镜像、构建 等等。它以原生方式运行在Linux系统之上,并由以下元素构成:
- Docker Daemon,运行在主机之上的程序
- Docker Client,负责与Docker Daemon通信以执行命令,Docker采用的是CS模式
- REST API,用于同Dockers Daemon远程交互