做瞹瞹爱视频网站,wordpress 定时任务,帝国网站管理系统入门教程,技术支持 东莞网站建设东莞天助linux基础 保护层级:
分为四个ring0-ring3 一般来说就两个#xff0c;0和3 0为内核 3为用户
权限:
用户分为多个组 文件和目录等等的权限一般都是三个#xff0c;即可读可写可执行。 读:R#xff0c;写:W#xff0c;执行:X 赋予一个可执行文件执行权限就是chmod x file…linux基础 保护层级:
分为四个ring0-ring3 一般来说就两个0和3 0为内核 3为用户
权限:
用户分为多个组 文件和目录等等的权限一般都是三个即可读可写可执行。 读:R写:W执行:X 赋予一个可执行文件执行权限就是chmod x filename
虚拟内存和物理内存 物理内存很直白就是内存中实际的地址。 虚拟内存是物理内存经过MMU转换后的地址(页表) 系统会给每个用户进程分配一段虚拟内存空间 所以说我们调试的可执行程序的内存空间布局都差不多但是是虚拟内存不是实际的物理内存。
Linux基础命令 学会看源码 linux是开源的他的代码实现都可以查到 我们研究Iinux的机制最重要的武器就是源码 分析源码是一个安全研究者必备的技能。 https://elixir.bootlin.com https://code.wobog.org
大端小端序
Iinux数据存储的格式为小端序
速记口令大端序:高低低高 小端序:高高低低 计算机内部有两种数据的存储形式:大端序、小端序
大端序:数据高位存储在计算机地址的低位数据低位存储在地址的高位
小端序:数据高位存储在计算机地址的高位数据低位存储在地址。
例子
以一个数据:0x0123456789abcdef为例 0为低地址7为高地址。 大端序存储
按照大端序的原则数据最高位01存储在低位最低位ef存储在高位
将此数据按照字符串输出得到的为:\x01\x23\x45\x67\x89\xab\xcd\xef 小端序存储
按照小端序的原则数据最高位01存储在高位.最低位ef存储在低位。 将此数据按照字符串输出得到的为:\xef\xcd\xab\x89\x67\x45\x23\x01 小端序
linux是小端序所以如果我们以字符串的形式输入一个数字时要注意格式 比如输入0xdeadbeef这个数字 字符串输入就是”xeflxbelxadlxde”传入给程序 好在有pwntoolsp32(0xdeadbeef)即可完成自动转换 324个字节ef be ad dex8 文件描述符
Linux 系统中把一切都看做是文件当进程打开现有文件或创建新文件时内核向进程返回一个文件描述符文件描述符就是内核为了高效管理已被打开的文件所创建的索引用来指向被打开的文件所有执行I0操作的系统调用都会通过文件描述符 每个文件描述符会与一个打开的文件相对应不同的文件描述符也可能指向同一个文件 相同的文件可以被不同的进程打开也可以在同一个进程被多次打开
我们会在open、read、write这些常见函数中见到。 0标准输入(stdin)、1标准输出(stdout)、2标准错误(stderr) read(0,buf,size)从stdin中读size个数据到buf中 write(1,buf,size)从buf中取size个数据到stdout中
栈(stack) 栈就是个阉割版的数组只能在一头操作为什么不直接用数组呢? 一把菜刀可以干很多事情切菜刮皮剁骨头。 但是在刮皮的时候我们还是会选择用刮皮刀原因很简单更方便
栈是一种数据结构他是一种先进后出(LIFOlast in first out)的数据结构。 栈的基本操作有两种:push(压栈)和pop(弹栈)。 由于函数调用顺序也是LIFO所以我们能接触到的绝大多数系统都是通过栈这一数据结构来维护函数调用关系。
linux中的栈
在linux系统中系统为每一个进程都安排了一个栈进程中每一个调用的函数都有自己独立的栈帧栈里的一段区域。
在linux系统中栈是由高地址向低地址生长 高地址为栈底低地址为栈顶 我们接触到的一些算法很多都是用栈来实现的比如DFS DFS会将发现的节点存储在栈中然后访问的顺序就是LIFO 但是很多这种LIFO的算法都会以递归的形式实现 其实递归的形式实现这些算法本质上来说也是利用栈结构只不过他没有在程序中另外申请一个栈而是用的函数调用栈。