mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-24 19:21:15 +07:00
add 4.9_patch_elf
This commit is contained in:
parent
a2bfc392fd
commit
559f3210cc
@ -56,6 +56,7 @@
|
||||
- [4.6 zio](doc/4.6_zio.md)
|
||||
- [4.7 通用 gadget](doc/4.7_common_gadget.md)
|
||||
- [4.8 使用 DynELF 泄露函数地址](doc/4.8_dynelf.md)
|
||||
- [4.9 给 ELF 文件打 patch](doc/4.9_patch_elf.md)
|
||||
|
||||
- [五、高级篇](doc/5_advanced.md)
|
||||
- [5.1 Fuzz 测试](doc/5.1_fuzz.md)
|
||||
|
@ -1,5 +1,8 @@
|
||||
# Summary
|
||||
|
||||
GitHub 地址:https://github.com/firmianay/CTF-All-In-One
|
||||
|
||||
|
||||
* [简介](README.md)
|
||||
* [一、基础知识篇](doc/1_basic.md)
|
||||
* [1.1 CTF 简介](doc/1.1_ctf.md)
|
||||
@ -54,6 +57,7 @@
|
||||
* [4.6 zio](doc/4.6_zio.md)
|
||||
* [4.7 通用 gadget](doc/4.7_common_gadget.md)
|
||||
* [4.8 使用 DynELF 泄露函数地址](doc/4.8_dynelf.md)
|
||||
* [4.9 给 ELF 文件打 patch](doc/4.9_patch_elf.md)
|
||||
* [五、高级篇](doc/5_advanced.md)
|
||||
* [5.1 Fuzz 测试](doc/5.1_fuzz.md)
|
||||
* [5.2 Pin 动态二进制插桩](doc/5.2_pin.md)
|
||||
|
@ -43,6 +43,12 @@ top 实时查看系统的整体运行情况
|
||||
|
||||
kill 杀死一个进程
|
||||
|
||||
ifconfig 查看或设置网络设备
|
||||
|
||||
ping 查看网络上的主机是否工作
|
||||
|
||||
netstat 显示网络连接、路由表和网络接口信息
|
||||
|
||||
nc(netcat) 建立 TCP 和 UDP 连接并监听
|
||||
|
||||
su 切换当前用户身份到其他用户身份
|
||||
@ -151,16 +157,21 @@ drwxr-xr-x 12 root root 4096 Jun 28 20:17 var
|
||||
```
|
||||
由于不同的发行版会有略微的不同,我们这里使用的是基于 Arch 的发行版 Manjaro,以上就是根目录下的内容,我们介绍几个重要的目录:
|
||||
- `/bin`、`/sbin`:链接到 `/usr/bin`,存放 Linux 一些核心的二进制文件,其包含的命令可在 shell 上运行。
|
||||
- `/boot`:启动 Linux 的核心文件。
|
||||
- `/dev`:设备文件。
|
||||
- `/etc`:存放各种配置文件。
|
||||
- `/boot`:操作系统启动时要用到的程序。
|
||||
- `/dev`:包含了所有 Linux 系统中使用的外部设备。需要注意的是这里并不是存放外部设备的驱动程序,而是一个访问这些设备的端口。
|
||||
- `/etc`:存放系统管理时要用到的各种配置文件和子目录。
|
||||
- `/etc/rc.d`:存放 Linux 启动和关闭时要用到的脚本。
|
||||
- `/home`:普通用户的主目录。
|
||||
- `/lib`、`/lib64`:链接到 `/usr/lib`,存放系统及软件需要的动态链接库。
|
||||
- `/lib`、`/lib64`:链接到 `/usr/lib`,存放系统及软件需要的动态链接共享库。
|
||||
- `/mnt`:这个目录让用户可以临时挂载其他的文件系统。
|
||||
- `/proc`:虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
|
||||
- `/root`:系统管理员的主目录。
|
||||
- `tmp`:公用的临时文件存放目录。
|
||||
- `usr`:应用程序和文件几乎都在这个目录下。
|
||||
- `/srv`:存放一些服务启动之后需要提取的数据。
|
||||
- `/sys`:该目录下安装了一个文件系统 sysfs。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建时,对应的文件和目录也在内核对象子系统中被创建。
|
||||
- `/tmp`:公用的临时文件存放目录。
|
||||
- `/usr`:应用程序和文件几乎都在这个目录下。
|
||||
- `/usr/src`:内核源代码的存放目录。
|
||||
- `/var`:存放了很多服务的日志信息。
|
||||
|
||||
|
||||
## 进程管理
|
||||
@ -221,7 +232,7 @@ drwxr-xr-x 4 root root 4096 Jul 28 08:48 boot
|
||||
第一栏从第二个字母开始就是权限字符串,权限表示三个为一组,依次是所有者权限、组权限、其他人权限。每组的顺序均为 `rwx`,如果有相应权限,则表示成相应字母,如果不具有相应权限,则用 `-` 表示。
|
||||
- `r`:读取权限,数字代号为 “4”
|
||||
- `w`:写入权限,数字代号为 “2”
|
||||
- `x`:执行或切换权限,数字代号为 “1”;
|
||||
- `x`:执行或切换权限,数字代号为 “1”
|
||||
|
||||
通过第一栏的第一个字母可知,第一行是一个链接文件 (`l`),第二行是个目录(`d`),第三行是个普通文件(`-`)。
|
||||
|
||||
@ -235,6 +246,8 @@ drwxr-xr-x 4 root root 4096 Jul 28 08:48 boot
|
||||
- `$ chmod g=x [file]`:指定组权限为可执行
|
||||
- `$ chmod o=rwx [file]`:制定其他人权限为可读、可写和可执行
|
||||
|
||||
![](../pic/1.3_file.png)
|
||||
|
||||
|
||||
## 字节序
|
||||
目前计算机中采用两种字节存储机制:大端(Big-endian)和小端(Little-endian)。
|
||||
@ -278,14 +291,14 @@ db-peda$ x/s 0xffffd584
|
||||
|
||||
## 输入输出
|
||||
- 使用命令的输出作为可执行文件的输入参数
|
||||
- ```$ ./vulnerable 'your_command_here'```
|
||||
- ```$ ./vulnerable $(your_command_here)```
|
||||
- `$ ./vulnerable 'your_command_here'`
|
||||
- `$ ./vulnerable $(your_command_here)`
|
||||
- 使用命令作为输入
|
||||
- ```$ your_command_here | ./vulnerable```
|
||||
- `$ your_command_here | ./vulnerable`
|
||||
- 将命令行输出写入文件
|
||||
- ```$ your_command_here > filename```
|
||||
- `$ your_command_here > filename`
|
||||
- 使用文件作为输入
|
||||
- ```$ ./vulnerable < filename```
|
||||
- `$ ./vulnerable < filename`
|
||||
|
||||
|
||||
## 文件描述符
|
||||
|
@ -274,9 +274,9 @@ long long | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 | 64 bits
|
||||
|
||||
固定大小的数据类型:
|
||||
- `int [# of bits]_t`
|
||||
- int8_t, int16_t, int32_t
|
||||
- int8\_t, int16\_t, int32_t
|
||||
- `uint[# of bits]_t`
|
||||
- uint8_t, uint16_t, uint32_t
|
||||
- uint8\_t, uint16\_t, uint32_t
|
||||
|
||||
- 有符号整数
|
||||
- ![](../pic/1.5.1_signed_integer.png)
|
||||
|
@ -353,20 +353,20 @@ int munmap(void *addr, size_t len);
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
void main() {
|
||||
void *curr_brk;
|
||||
void *curr_brk;
|
||||
|
||||
printf("当前进程 PID:%d\n", getpid());
|
||||
printf("初始化后\n");
|
||||
getchar();
|
||||
printf("当前进程 PID:%d\n", getpid());
|
||||
printf("初始化后\n");
|
||||
getchar();
|
||||
|
||||
char *addr;
|
||||
addr = mmap(NULL, (size_t)4096, PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
|
||||
printf("mmap 完成\n");
|
||||
getchar();
|
||||
char *addr;
|
||||
addr = mmap(NULL, (size_t)4096, PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
|
||||
printf("mmap 完成\n");
|
||||
getchar();
|
||||
|
||||
munmap(addr, (size_t)4096);
|
||||
printf("munmap 完成\n");
|
||||
getchar();
|
||||
munmap(addr, (size_t)4096);
|
||||
printf("munmap 完成\n");
|
||||
getchar();
|
||||
}
|
||||
```
|
||||
第一步初始化:
|
||||
|
1
doc/4.9_patch_elf.md
Normal file
1
doc/4.9_patch_elf.md
Normal file
@ -0,0 +1 @@
|
||||
# 给 ELF 文件打 patch
|
@ -8,3 +8,4 @@
|
||||
- [4.6 zio](4.6_zio.md)
|
||||
- [4.7 通用 gadget](4.7_common_gadget.md)
|
||||
- [4.8 使用 DynELF 泄露函数地址](4.8_dynelf.md)
|
||||
- [4.9 给 ELF 文件打 patch](4.9_patch_elf.md)
|
||||
|
@ -1 +1 @@
|
||||
# 5.6_LLVM
|
||||
# 5.6 LLVM
|
||||
|
@ -1,13 +1,13 @@
|
||||
# 第六章 题解篇
|
||||
|
||||
- pwn
|
||||
- [6.1.1 pwn HCTF2016 brop](./6.1.1_pwn_hctf2016_brop.md)
|
||||
- [6.1.2 pwn NJCTF2017 pingme](./6.1.2_pwn_njctf2017_pingme.md)
|
||||
- [6.1.3 pwn XDCTF2015 pwn200](./6.1.3_pwn_xdctf2015_pwn200.md)
|
||||
- [6.1.4 pwn BackdoorCTF2017 Fun-Signals](./6.1.4_pwn_backdoorctf2017_fun_signals.md)
|
||||
- [6.1.5 pwn GreHackCTF2017 beerfighter](./6.1.5_pwn_grehackctf2017_beerfighter.md)
|
||||
- [6.1.6 pwn DefconCTF2015 fuckup](./6.1.6_pwn_defconctf2015_fuckup.md)
|
||||
- [6.1.7 pwn 0CTF2015 freenote](./6.1.7_pwn_0ctf2015_freenote.md)
|
||||
- [6.1.1 pwn HCTF2016 brop](6.1.1_pwn_hctf2016_brop.md)
|
||||
- [6.1.2 pwn NJCTF2017 pingme](6.1.2_pwn_njctf2017_pingme.md)
|
||||
- [6.1.3 pwn XDCTF2015 pwn200](6.1.3_pwn_xdctf2015_pwn200.md)
|
||||
- [6.1.4 pwn BackdoorCTF2017 Fun-Signals](6.1.4_pwn_backdoorctf2017_fun_signals.md)
|
||||
- [6.1.5 pwn GreHackCTF2017 beerfighter](6.1.5_pwn_grehackctf2017_beerfighter.md)
|
||||
- [6.1.6 pwn DefconCTF2015 fuckup](6.1.6_pwn_defconctf2015_fuckup.md)
|
||||
- [6.1.7 pwn 0CTF2015 freenote](6.1.7_pwn_0ctf2015_freenote.md)
|
||||
- re
|
||||
- [6.2.1 re XHPCTF2017 dont_panic](./6.2.1_re_xhpctf2017_dont_panic.md)
|
||||
- [6.2.2 re ECTF2016 tayy](./6.2.2_re_ectf2016_tayy.md)
|
||||
- [6.2.1 re XHPCTF2017 dont_panic](6.2.1_re_xhpctf2017_dont_panic.md)
|
||||
- [6.2.2 re ECTF2016 tayy](6.2.2_re_ectf2016_tayy.md)
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
这些是我在 XDSEC 做分享的 PPT,主要内容取自 CTF-All-In-One,可作为辅助学习。
|
||||
|
||||
- [01 Fight with Linux](../ppt/01_fight-with-linux.pdf)
|
||||
- [01 Fight with Linux](../slides/01_fight-with-linux.pdf)
|
||||
|
BIN
pic/1.3_file.png
Normal file
BIN
pic/1.3_file.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
Loading…
Reference in New Issue
Block a user