BalsnCTF2022 web wp
在天哥的带领下简单的看了一下题,然后天哥ak了web,tqltql,我太弱了
my first app
nextjs写的站,我是js垃圾,我看这个玩意以为是后端框架,然后找了半天没找到交互的点,完全不知道怎么打,结果天哥和我说这个玩意是前端框架,定义的变量也都打包到前端里去了,直接f12就能找到。。。。
学习了
第五章,进程
看之前感觉好像没什么东西,看到一半感觉还是非常牛逼的
这里面阐述了任务(Task)和进程(Process)之间的区别
说实话很多地方还是觉得很抽象,按照本科期间的说法,进程就是一个运行的二进制程序,但这么说似乎和任务没什么区别。从本章提到的内容上来说,感觉任务是计算机依次加载的一系列程序,以规定的顺序运行,而进程则是通过fork和exec系统调用,在用户的交互下进行,可以选择执行的二进制程序
并且进程间存在父子关系,子进程由父进程fork产生,linux中所有进程均由pid为1的初始进程产生,以前我以为pid为1的进程就是操作系统,现在看来,似乎操作系统(内核)运行在更下一层,而pid为1的进程是内核创建出来对所有进程进行管理并提供用户交互的初始进程
摸了几天继续看一下,第四章要实现究极虚拟内存,这非常关键,也是操作系统中的一个很核心的部分。之前的批处理和多道处理系统虽然实现了硬件特权的限制和系统调用,但是并没有对应用空间进行隔离,导致用户应用必须以规定的形式分布在内存中,并且还可以读取和修改其他用户程序,甚至是内核数据的内容,并不能认为是一个足够安全的系统。
本章的目标就是实现虚拟内存的分配,内存分页和页表映射,实现内核与各用户进程间的隔离。通过一层虚拟地址,使得操作系统获得了对实际物理内存访问的完全控制,用户程序只能访问由操作系统提供的虚拟地址,进而实现内存空间的完全隔离
实现还是经典的页表,段表难维护碎片多。进程对内存的访问一般来说就是通过load等汇编指令进行的,在硬件层面提供一个MMU,并通过内核维护应用程序的页表,MMU访问页表对虚拟地址进行解析,顺便还能对页进行rwx等权限控制,进一步加强保护
这一章的文件结构略微的复杂了一点,需要开始之前先稍微强化一下对rust mod use等关键字的认知。。。
Packages and Crates rust认为src下的main.rs是二进制crate的主文件,而lib.rs则是库crate的主文件,所以这里的lib.rs是主文件,和cargo.toml中的name赋值为user_lib
并无关联。。。
When we entered the command, Cargo created a Cargo.toml file, giving us a package. Looking at the contents of Cargo.toml, there’s no mention of src/main.rs because Cargo follows a convention that src/main.rs is the crate root of a binary crate with the same name as the package. Likewise, Cargo knows that if the package directory contains src/lib.rs, the package contains a library crate with the same name as the package, and src/lib.rs is its crate root. Cargo passes the crate root files to rustc to build the library or binary.