Pwn入门系列2——计算机内部数据存储格式
linux基础
①保护层级:分为四个ring0-ring3
②一般来说就两个,0和3
③0为内核
④3为用户
linux基础
①权限:用户分为多个组
②文件和目录权限一般都是三个,即可读可写可执行
③读:R,写:W,执行:X
④赋予一个可执行文件执行权限就是chmod+x filename
linux基础
①虚拟内存和物理内存
②物理内存很直白,就是内存中实际的地址
③虚拟内存就是物理内存经过MMU转换后的地址
④系统会给每个用户进程分配一段虚拟内存空间
⑤所以说我们调试的可执行程序的内存空间布局都差不多,但是是虚拟内存,不是实际物理内存。
linux基础命令
名称                         作用                              示例
   ls                             列出当前目录                              ls
   cd                               切换目录                           cd/home/ctf
  pwd                          打印当前路径                              pwd
  touch                        创建空白文件                       touch flag.py
  mkdir                           创建目录                           mkdir  /home/ctf
  rmdir                            删除目录                           rmdir  /home/ctf
    rm                              删除文件                                rm flag
    cp                              复制文件                  cp /home/ctf/flag   /home/flag
    mv                             移动文件                  mv  flag  /home/ctf/flag
    cat                          输出文件内容                        cat  flag
   diff                        比较两个文件信息                 diff  flag1 flag2
   chmod                      切换执行权限                    chmod 777 elf1
   locate                         查找文件                         locate flag
学会看源码
①linux是开源的,它的代码实现都可以找到
②我们研究linux的机制,最重要的武器就是源码
③分析源码是一个安全研究者必备的技能
④https://elixir.bootlin.com
⑤https://code.woboq.org
大端序和小端序
①计算机内部有两种数据的存储形式:大端序和小端序
②大端序:数据高位存储在计算机地址的低位,数据低位存储在计算机地址的高位
③小端序:数据高位存储在计算机地址的高位,数据低位存储在计算机地址的低位
文件描述符
①Linux系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已经被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。
②每个文件描述符会与一个打开的文件相对应,不同的文件描述符也可能指向同一个文件
③相同的文件可以被不同的进程打开,也可以在同一个进程被多次打开。
文件描述符
①我们会在open、read、write这些常见函数中见到
②0标准输入(标准输入)、1标准输出(stdout)、2标准错误(stderr)
③read(0,buf,size)从stdin中读size个数据到buf中。
④write(1,buf,size)从buf中取出size个数据到stdout中。
栈(stack)
①栈是一种数据结构,他是一种后进先出(LIFO)的数据结构
②栈的基本操作有两种:push(压栈)和pop(弹栈)
③由于函数调用顺序也是LIFO,所以我们能接触到的绝大多数系统,都是通过栈这一数据结构来维护函数调用关系。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!