Merge pull request #2 from firmianay/testing

add cmd tips
This commit is contained in:
Firmy Yang 2017-08-05 07:51:56 -05:00 committed by GitHub
commit 90b030ad09
11 changed files with 49 additions and 11 deletions

View File

@ -18,7 +18,7 @@
├── pic ├── pic
│   ├── 1.3_byte_order.png │   ├── 1.3_byte_order.png
├── README.md ├── README.md
└── source └── src
├── Crypto ├── Crypto
├── Misc ├── Misc
├── Pwn ├── Pwn
@ -32,7 +32,7 @@
- `CONTRIBUTION.md`:合作与贡献的相关内容。 - `CONTRIBUTION.md`:合作与贡献的相关内容。
- `doc`:该文件夹包含书全部内容的 Markdown 文件。(文字) - `doc`:该文件夹包含书全部内容的 Markdown 文件。(文字)
- `pic`:该文件夹包含所有 Markdown 中引用的所有图片文件。(图片) - `pic`:该文件夹包含所有 Markdown 中引用的所有图片文件。(图片)
- `source`:该文件夹包含书中示例和练习的二进制文件或源代码,分专题保存。(代码) - `src`:该文件夹包含书中示例和练习的二进制文件或源代码,分专题保存。(代码)
##### 注意事项 ##### 注意事项
- 在开始编写某一个内容之前,请先在下面的表格里注明,以避免重复和冲突。如果是已经完成的章节,则可以直接进行修改。 - 在开始编写某一个内容之前,请先在下面的表格里注明,以避免重复和冲突。如果是已经完成的章节,则可以直接进行修改。

View File

@ -38,6 +38,7 @@
- [四、技巧篇](doc/4_tips.md) - [四、技巧篇](doc/4_tips.md)
- [4.1 AWD模式](doc/4.1_AWD.md) - [4.1 AWD模式](doc/4.1_AWD.md)
- [4.2 Linux 命令行技巧](doc/4.2_Linux_terminal_tips.md)
- [五、高级篇](doc/5_advanced.md) - [五、高级篇](doc/5_advanced.md)
- [5.1 Fuzz 测试](doc/5.1_fuzz.md) - [5.1 Fuzz 测试](doc/5.1_fuzz.md)

View File

@ -1,9 +1,11 @@
# Linux 基础 # Linux 基础
- [常用基础命令](#command) - [常用基础命令](#常用基础命令)
- [字节序](#order) - [字节序](#字节序)
- [输入输出](#输入输出)
## <span id="command">常用基础命令</span>
## 常用基础命令
```text ```text
ls 用来显示目标列表 ls 用来显示目标列表
@ -32,7 +34,7 @@ nano / vim / emacs 字符终端的文本编辑器
``` ```
## <span id="order">字节序</span> ## 字节序
目前计算机中采用两种字节存储机制大端Big-endian和小端Little-endian 目前计算机中采用两种字节存储机制大端Big-endian和小端Little-endian
>MSB (Most Significan Bit/Byte):最重要的位或最重要的字节。 >MSB (Most Significan Bit/Byte):最重要的位或最重要的字节。
@ -44,3 +46,15 @@ Big-endian 规定 MSB 在存储时放在低地址,在传输时放在流的开
例如十六进制整数 0x12345678 存入以 1000H 开始的内存中: 例如十六进制整数 0x12345678 存入以 1000H 开始的内存中:
![](../pic/1.3_byte_order.png) ![](../pic/1.3_byte_order.png)
## 输入输出
- 使用命令的输出作为可执行文件的输入参数
- ```$ ./vulnerable 'your_command_here'```
- ```$ ./vulnerable $(your_command_here)```
- 使用命令作为输入
- ```$ your_command_here | ./vulnerable```
- 将命令行输出写入文件
- ```$ your_command_here > filename```
- 使用文件作为输入
- ```$ ./vulnerable < filename```

View File

@ -1,8 +1,8 @@
# C 语言基础 # C 语言基础
- [从源代码到可执行文件](#compile) - [从源代码到可执行文件](#从源代码到可执行文件)
## <span id="compile">从源代码到可执行文件</span> ## 从源代码到可执行文件
我们以经典著作《The C Programming Language》中的第一个程序 “Hello World” 为例,讲解 Linux 下 GCC 的编译过程。 我们以经典著作《The C Programming Language》中的第一个程序 “Hello World” 为例,讲解 Linux 下 GCC 的编译过程。
```c ```c

View File

@ -0,0 +1,9 @@
# Linux 命令行技巧
- [重定向输入字符](#重定向输入字符)
## 重定向输入字符
有时候我们需要在 shell 里输入键盘上没有对应的字符,如 `0x1F`,就需要使用重定向输入。下面是一个例子:[源码](../src/Others/4.2_0x1f.c)
![](../pic/4.2_0x1f.png)

View File

@ -171,9 +171,9 @@ strings [executable] | grep -i upx
``` ```
#### 练习 #### 练习
[strings_crackme](../source/Reverse/strings_crackme) [strings_crackme](../src/Reverse/strings_crackme)
[flag_pwnablekr](../source/Reverse/flag_pwnablekr) [flag_pwnablekr](../src/Reverse/flag_pwnablekr)
## xxd ## xxd
@ -193,4 +193,4 @@ xxd -g1
``` ```
#### 练习 #### 练习
[xxd_crackme](../source/Reverse/xxd_crackme) (使用 *strings* 再做一次) [xxd_crackme](../src/Reverse/xxd_crackme) (使用 *strings* 再做一次)

BIN
pic/4.2_0x1f.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

14
src/Others/4.2_0x1f.c Normal file
View File

@ -0,0 +1,14 @@
#include<stdio.h>
#include<string.h>
void main() {
char data[8];
char str[8];
printf("请输入十六进制为 0x1f 的字符: ");
sprintf(str, "%c", 31);
scanf("%s", data);
if (!strcmp((const char *)data, (const char *)str)) {
printf("correct\n");
} else {
printf("wrong\n");
}
}