mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-25 11:41:16 +07:00
update memory
This commit is contained in:
parent
5330ed1487
commit
321ae62e58
@ -12,7 +12,7 @@
|
|||||||
- [1.5.4 Windows PE](doc/1.5.4_pe.md)
|
- [1.5.4 Windows PE](doc/1.5.4_pe.md)
|
||||||
- [1.5.5 静态链接](doc/1.5.5_static_link.md)
|
- [1.5.5 静态链接](doc/1.5.5_static_link.md)
|
||||||
- [1.5.6 动态链接](doc/1.5.6_dynamic_link.md)
|
- [1.5.6 动态链接](doc/1.5.6_dynamic_link.md)
|
||||||
- [1.5.7 内存与虚拟内存](doc/1.5.7_memory.md)
|
- [1.5.7 内存管理](doc/1.5.7_memory.md)
|
||||||
- [1.6 密码学基础](doc/1.6_crypto_basic.md)
|
- [1.6 密码学基础](doc/1.6_crypto_basic.md)
|
||||||
- [1.7 Android 安全基础](doc/1.7_android_basic.md)
|
- [1.7 Android 安全基础](doc/1.7_android_basic.md)
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
- [常用基础命令](#常用基础命令)
|
- [常用基础命令](#常用基础命令)
|
||||||
- [进程管理](#进程管理)
|
- [进程管理](#进程管理)
|
||||||
|
- [UID 和 GID](#uid-和-gid)
|
||||||
- [权限设置](#权限设置)
|
- [权限设置](#权限设置)
|
||||||
- [字节序](#字节序)
|
- [字节序](#字节序)
|
||||||
- [输入输出](#输入输出)
|
- [输入输出](#输入输出)
|
||||||
@ -47,6 +48,40 @@ nano / vim / emacs 字符终端的文本编辑器
|
|||||||
- 删除进程某 PID 指定的进程:`$ kill [PID]`
|
- 删除进程某 PID 指定的进程:`$ kill [PID]`
|
||||||
|
|
||||||
|
|
||||||
|
## UID 和 GID
|
||||||
|
Linux 是一个支持多用户的操作系统,每个用户都有 User ID(UID) 和 Group ID(GID),UID 是对一个用户的单一身份标识,而 GID 则对应多个 UID。知道某个用户的 UID 和 GID 是非常有用的,一些程序可能就需要 UID/GID 来运行。可以使用 `id` 命令来查看:
|
||||||
|
```text
|
||||||
|
$ id root
|
||||||
|
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),19(log)
|
||||||
|
$ id firmy
|
||||||
|
uid=1000(firmy) gid=1000(firmy) groups=1000(firmy),3(sys),7(lp),10(wheel),90(network),91(video),93(optical),95(storage),96(scanner),98(power),56(bumblebee)
|
||||||
|
```
|
||||||
|
UID 为 0 的 root 用户类似于系统管理员,它具有系统的完全访问权。我自己新建的用户 firmy,其 UID 为 1000,是一个普通用户。GID 的关系存储在 `/etc/group` 文件中:
|
||||||
|
```text
|
||||||
|
$ cat /etc/group
|
||||||
|
root:x:0:root
|
||||||
|
bin:x:1:root,bin,daemon
|
||||||
|
daemon:x:2:root,bin,daemon
|
||||||
|
sys:x:3:root,bin,firmy
|
||||||
|
......
|
||||||
|
```
|
||||||
|
所有用户的信息(除了密码)都保存在 `/etc/passwd` 文件中,而为了安全起见,加密过的用户密码保存在 `/etc/shadow` 文件中,此文件只有 root 权限可以访问。
|
||||||
|
```text
|
||||||
|
$ sudo cat /etc/shadow
|
||||||
|
root:$6$root$wvK.pRXFEH80GYkpiu1tEWYMOueo4tZtq7mYnldiyJBZDMe.mKwt.WIJnehb4bhZchL/93Oe1ok9UwxYf79yR1:17264::::::
|
||||||
|
firmy:$6$firmy$dhGT.WP91lnpG5/10GfGdj5L1fFVSoYlxwYHQn.llc5eKOvr7J8nqqGdVFKykMUSDNxix5Vh8zbXIapt0oPd8.:17264:0:99999:7:::
|
||||||
|
```
|
||||||
|
由于普通用户的权限比较低,这里使用 `sudo` 命令可以让普通用户以 root 用户的身份运行某一命令。使用 `su` 命令则可以切换到一个不同的用户:
|
||||||
|
```text
|
||||||
|
$ whoami
|
||||||
|
firmy
|
||||||
|
$ su root
|
||||||
|
# whoami
|
||||||
|
root
|
||||||
|
```
|
||||||
|
`whoami` 用于打印当前有效的用户名称,shell 中普通用户以 `$` 开头,root 用户以 `#` 开头。在输入密码后,我们已经从 firmy 用户转换到 root 用户了。
|
||||||
|
|
||||||
|
|
||||||
## 权限设置
|
## 权限设置
|
||||||
在 Linux 中,文件或目录权限的控制分别以读取、写入、执行 3 种一般权限来区分,另有 3 种特殊权限可供运用。
|
在 Linux 中,文件或目录权限的控制分别以读取、写入、执行 3 种一般权限来区分,另有 3 种特殊权限可供运用。
|
||||||
|
|
||||||
|
@ -1 +1,12 @@
|
|||||||
# x86 汇编基础
|
# x86/x64/ARM 汇编基础
|
||||||
|
|
||||||
|
- [x86](#x86)
|
||||||
|
- [x64](#x64)
|
||||||
|
- [ARM](#arm)
|
||||||
|
|
||||||
|
|
||||||
|
## x86
|
||||||
|
|
||||||
|
## x64
|
||||||
|
|
||||||
|
## ARM
|
||||||
|
@ -1 +1,30 @@
|
|||||||
# 内存与虚拟内存
|
# 内存管理
|
||||||
|
|
||||||
|
- [什么是内存](#什么是内存)
|
||||||
|
- [栈与调用约定](#栈与调用约定)
|
||||||
|
- [堆与内存管理](#堆与内存管理)
|
||||||
|
|
||||||
|
|
||||||
|
## 什么是内存
|
||||||
|
为了使用户程序在运行时具有一个私有的地址空间、有自己的 CPU,就像独占了整个计算机一样,现代操作系统提出了虚拟内存的概念。
|
||||||
|
|
||||||
|
虚拟内存的主要作用主要为三个:
|
||||||
|
- 它将内存看做一个存储在磁盘上的地址空间的高速缓存,在内存中只保存活动区域,并根据需要在磁盘和内存之间来回传送数据。
|
||||||
|
- 它为每个进程提供了一致的地址空间。
|
||||||
|
- 它保护了每个进程的地址空间不被其他进程破坏。
|
||||||
|
|
||||||
|
现代操作系统采用虚拟寻址的方式,CPU 通过生成一个虚拟地址(Virtual Address(VA))来访问内存,然后这个虚拟地址通过内存管理单元(Memory Management Unit(MMU))转换成物理地址之后被送到存储器。
|
||||||
|
|
||||||
|
![](../pic/1.5.7_va.png)
|
||||||
|
|
||||||
|
前面我们已经看到可执行文件被映射到了内存中,Linux 为每个进程维持了一个单独的虚拟地址空间,包括了 .text、.data、.bss、栈(stack)、堆(heap),共享库等内容。
|
||||||
|
|
||||||
|
32 位系统有 4GB 的地址空间,其中 0x08048000~0xbfffffff 是用户空间(3GB),0xc0000000~0xffffffff 是内核空间(1GB)。
|
||||||
|
|
||||||
|
![](../pic/1.5.7_vm.png)
|
||||||
|
|
||||||
|
|
||||||
|
## 栈与调用约定
|
||||||
|
|
||||||
|
|
||||||
|
## 堆与内存管理
|
||||||
|
@ -11,6 +11,6 @@
|
|||||||
- [1.5.4 Windows PE](1.5.4_pe.md)
|
- [1.5.4 Windows PE](1.5.4_pe.md)
|
||||||
- [1.5.5 静态链接](1.5.5_static_link.md)
|
- [1.5.5 静态链接](1.5.5_static_link.md)
|
||||||
- [1.5.6 动态链接](1.5.6_dynamic_link.md)
|
- [1.5.6 动态链接](1.5.6_dynamic_link.md)
|
||||||
- [1.5.7 内存与虚拟内存](1.5.7_memory.md)
|
- [1.5.7 内存管理](1.5.7_memory.md)
|
||||||
- [1.6 密码学基础](1.6_crypto_basic.md)
|
- [1.6 密码学基础](1.6_crypto_basic.md)
|
||||||
- [1.7 Android 安全基础](1.7_android_basic.md)
|
- [1.7 Android 安全基础](1.7_android_basic.md)
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
- [重定向输入字符](#重定向输入字符)
|
- [重定向输入字符](#重定向输入字符)
|
||||||
- [从可执行文件中提取 shellcode](#从可执行文件中提取-shellcode)
|
- [从可执行文件中提取 shellcode](#从可执行文件中提取-shellcode)
|
||||||
- [查看进程虚拟地址空间](#查看进程虚拟地址空间)
|
- [查看进程虚拟地址空间](#查看进程虚拟地址空间)
|
||||||
|
- [ASCII 表](#ascii-表)
|
||||||
|
|
||||||
|
|
||||||
## 重定向输入字符
|
## 重定向输入字符
|
||||||
@ -95,3 +96,100 @@ ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsysca
|
|||||||
- **设备**:映像文件的主设备号和次设备号,可以通过通过 `cat /proc/devices` 查看设备号对应的设备名
|
- **设备**:映像文件的主设备号和次设备号,可以通过通过 `cat /proc/devices` 查看设备号对应的设备名
|
||||||
- **节点**:映像文件的节点号
|
- **节点**:映像文件的节点号
|
||||||
- **路径**: 映像文件的路径,经常同一个地址有两个地址范围,那是因为一段是 `r-xp` 为只读的代码段,一段是 `rwxp` 为可读写的数据段
|
- **路径**: 映像文件的路径,经常同一个地址有两个地址范围,那是因为一段是 `r-xp` 为只读的代码段,一段是 `rwxp` 为可读写的数据段
|
||||||
|
|
||||||
|
|
||||||
|
## ASCII 表
|
||||||
|
ASCII 表将键盘上的所有字符映射到固定的数字。有时候我们可能需要查看这张表:
|
||||||
|
```text
|
||||||
|
$ man ascii
|
||||||
|
|
||||||
|
Oct Dec Hex Char Oct Dec Hex Char
|
||||||
|
────────────────────────────────────────────────────────────────────────
|
||||||
|
000 0 00 NUL '\0' (null character) 100 64 40 @
|
||||||
|
001 1 01 SOH (start of heading) 101 65 41 A
|
||||||
|
002 2 02 STX (start of text) 102 66 42 B
|
||||||
|
003 3 03 ETX (end of text) 103 67 43 C
|
||||||
|
004 4 04 EOT (end of transmission) 104 68 44 D
|
||||||
|
005 5 05 ENQ (enquiry) 105 69 45 E
|
||||||
|
006 6 06 ACK (acknowledge) 106 70 46 F
|
||||||
|
007 7 07 BEL '\a' (bell) 107 71 47 G
|
||||||
|
010 8 08 BS '\b' (backspace) 110 72 48 H
|
||||||
|
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
|
||||||
|
012 10 0A LF '\n' (new line) 112 74 4A J
|
||||||
|
013 11 0B VT '\v' (vertical tab) 113 75 4B K
|
||||||
|
014 12 0C FF '\f' (form feed) 114 76 4C L
|
||||||
|
015 13 0D CR '\r' (carriage ret) 115 77 4D M
|
||||||
|
016 14 0E SO (shift out) 116 78 4E N
|
||||||
|
017 15 0F SI (shift in) 117 79 4F O
|
||||||
|
020 16 10 DLE (data link escape) 120 80 50 P
|
||||||
|
021 17 11 DC1 (device control 1) 121 81 51 Q
|
||||||
|
022 18 12 DC2 (device control 2) 122 82 52 R
|
||||||
|
023 19 13 DC3 (device control 3) 123 83 53 S
|
||||||
|
024 20 14 DC4 (device control 4) 124 84 54 T
|
||||||
|
025 21 15 NAK (negative ack.) 125 85 55 U
|
||||||
|
026 22 16 SYN (synchronous idle) 126 86 56 V
|
||||||
|
027 23 17 ETB (end of trans. blk) 127 87 57 W
|
||||||
|
030 24 18 CAN (cancel) 130 88 58 X
|
||||||
|
031 25 19 EM (end of medium) 131 89 59 Y
|
||||||
|
032 26 1A SUB (substitute) 132 90 5A Z
|
||||||
|
033 27 1B ESC (escape) 133 91 5B [
|
||||||
|
034 28 1C FS (file separator) 134 92 5C \ '\\'
|
||||||
|
035 29 1D GS (group separator) 135 93 5D ]
|
||||||
|
036 30 1E RS (record separator) 136 94 5E ^
|
||||||
|
037 31 1F US (unit separator) 137 95 5F _
|
||||||
|
040 32 20 SPACE 140 96 60 `
|
||||||
|
041 33 21 ! 141 97 61 a
|
||||||
|
042 34 22 " 142 98 62 b
|
||||||
|
043 35 23 # 143 99 63 c
|
||||||
|
044 36 24 $ 144 100 64 d
|
||||||
|
045 37 25 % 145 101 65 e
|
||||||
|
046 38 26 & 146 102 66 f
|
||||||
|
047 39 27 ' 147 103 67 g
|
||||||
|
050 40 28 ( 150 104 68 h
|
||||||
|
051 41 29 ) 151 105 69 i
|
||||||
|
052 42 2A * 152 106 6A j
|
||||||
|
053 43 2B + 153 107 6B k
|
||||||
|
054 44 2C , 154 108 6C l
|
||||||
|
055 45 2D - 155 109 6D m
|
||||||
|
|
||||||
|
056 46 2E . 156 110 6E n
|
||||||
|
057 47 2F / 157 111 6F o
|
||||||
|
060 48 30 0 160 112 70 p
|
||||||
|
061 49 31 1 161 113 71 q
|
||||||
|
062 50 32 2 162 114 72 r
|
||||||
|
063 51 33 3 163 115 73 s
|
||||||
|
064 52 34 4 164 116 74 t
|
||||||
|
065 53 35 5 165 117 75 u
|
||||||
|
066 54 36 6 166 118 76 v
|
||||||
|
067 55 37 7 167 119 77 w
|
||||||
|
070 56 38 8 170 120 78 x
|
||||||
|
071 57 39 9 171 121 79 y
|
||||||
|
072 58 3A : 172 122 7A z
|
||||||
|
073 59 3B ; 173 123 7B {
|
||||||
|
074 60 3C < 174 124 7C |
|
||||||
|
075 61 3D = 175 125 7D }
|
||||||
|
076 62 3E > 176 126 7E ~
|
||||||
|
077 63 3F ? 177 127 7F DEL
|
||||||
|
|
||||||
|
Tables
|
||||||
|
For convenience, below are more compact tables in hex and decimal.
|
||||||
|
|
||||||
|
2 3 4 5 6 7 30 40 50 60 70 80 90 100 110 120
|
||||||
|
------------- ---------------------------------
|
||||||
|
0: 0 @ P ` p 0: ( 2 < F P Z d n x
|
||||||
|
1: ! 1 A Q a q 1: ) 3 = G Q [ e o y
|
||||||
|
2: " 2 B R b r 2: * 4 > H R \ f p z
|
||||||
|
3: # 3 C S c s 3: ! + 5 ? I S ] g q {
|
||||||
|
4: $ 4 D T d t 4: " , 6 @ J T ^ h r |
|
||||||
|
5: % 5 E U e u 5: # - 7 A K U _ i s }
|
||||||
|
6: & 6 F V f v 6: $ . 8 B L V ` j t ~
|
||||||
|
7: ' 7 G W g w 7: % / 9 C M W a k u DEL
|
||||||
|
8: ( 8 H X h x 8: & 0 : D N X b l v
|
||||||
|
9: ) 9 I Y i y 9: ' 1 ; E O Y c m w
|
||||||
|
A: * : J Z j z
|
||||||
|
B: + ; K [ k {
|
||||||
|
C: , < L \ l |
|
||||||
|
D: - = M ] m }
|
||||||
|
E: . > N ^ n ~
|
||||||
|
F: / ? O _ o DEL
|
||||||
|
```
|
||||||
|
BIN
pic/1.5.7_va.png
Normal file
BIN
pic/1.5.7_va.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
BIN
pic/1.5.7_vm.png
Normal file
BIN
pic/1.5.7_vm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 97 KiB |
Loading…
Reference in New Issue
Block a user