From 9ee30786b862a12a14e7e8f4668f1d0265599690 Mon Sep 17 00:00:00 2001 From: firmianay Date: Sun, 15 Oct 2017 14:44:32 +0800 Subject: [PATCH] update README --- CONTRIBUTION.md | 8 +++++--- README.md | 1 + SUMMARY.md | 1 + doc/2.7_pwntools.md | 35 +++++++++++++++++++++++++++++++++++ doc/6.6_ppt.md | 5 +++++ doc/6_appendix.md | 1 + 6 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 doc/6.6_ppt.md diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md index 8f9e57e..f7c7f52 100644 --- a/CONTRIBUTION.md +++ b/CONTRIBUTION.md @@ -20,6 +20,8 @@ ├── pic │   ├── 1.3_byte_order.png │   └── 5.2_pin_arch.png +├── ppt +│ └── 01_fight-with-linux.pdf ├── README.md ├── src │   ├── Others @@ -38,6 +40,7 @@ - `doc`:该文件夹包含书全部内容的 Markdown 文件。(文字) - `pic`:该文件夹包含所有 Markdown 中引用的所有图片文件。(图片) - `src`:该文件夹包含书中示例和练习的二进制文件或源代码,分专题保存。(代码) +- `ppt`:该文件夹包含以书为主要内容制作的 PPT。(分享) #### 注意事项 - 在开始编写某一个内容之前,请先在下面的表格里注明,以避免重复和冲突。如果是已经完成的章节,则可以直接进行修改。 @@ -46,7 +49,6 @@ - 如果你新添加一个章节,需要在 **README.md**、**SUMMARY.md** 和章节所属部分相应的文件中添加条目。 -| 章节 | 作者 | 进度 | -| ------------------ | --------- | ---- | +| 章节 | 作者 | 进度 | +| ------------------ | --------- | ------ | | 1.5.5_static_link | firmianay | 未完成 | -| 1.6-Crypto/2.1-gdb | Skye | 未完成 | diff --git a/README.md b/README.md index 96d1465..aa2dbdd 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ - [6.3 更多资源](doc/6.3_books&blogs.md) - [6.4 习题 write-up](doc/6.4_writeup.md) - [6.5 Linux x86-64 系统调用表](doc/6.5_syscall.md) + - [6.6 PPT](doc/6.6_ppt.md) 合作和贡献 diff --git a/SUMMARY.md b/SUMMARY.md index 0ab64c2..1cba32a 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -58,3 +58,4 @@ * [6.3 更多资源](doc/6.3_books&blogs.md) * [6.4 习题 write-up](doc/6.4_writeup.md) * [6.5 Linux x86-64 系统调用表](doc/6.5_syscall.md) + * [6.6 PPT](doc/6.6_ppt.md) diff --git a/doc/2.7_pwntools.md b/doc/2.7_pwntools.md index d323425..90623f9 100644 --- a/doc/2.7_pwntools.md +++ b/doc/2.7_pwntools.md @@ -487,8 +487,43 @@ continue #### rop #### util +`pwnlib.util.packing`, `pwnlib.util.cyclic` + +util 其实是一些模块的集合,包含了一些实用的小工具。这里主要介绍两个,packing 和 cyclic。 + +packing 模块用于将整数打包和解包,它简化了标准库中的 `struct.pack` 和 `struct.unpack` 函数,同时增加了对任意宽度整数的支持。 + +使用 `p32`, `p64`, `u32`, `u64` 函数分别对 32 位和 64 位整数打包和解包,也可以使用 `pack()` 自己定义长度,另外添加参数 `endian` 和 `signed` 设置端序和是否带符号。 +``` +>>> p32(0xdeadbeef) +'\xef\xbe\xad\xde' +>>> p64(0xdeadbeef).encode('hex') +'efbeadde00000000' +>>> p32(0xdeadbeef, endian='big', sign='unsigned') +'\xde\xad\xbe\xef' +``` +``` +>>> u32('1234') +875770417 +>>> u32('1234', endian='big', sign='signed') +825373492 +>>> u32('\xef\xbe\xad\xde') +3735928559 +``` + +cyclic 模块在缓冲区溢出中很有用,它帮助生成模式字符串,然后查找偏移,以确定返回地址。 +``` +>>> cyclic(20) +'aaaabaaacaaadaaaeaaa' +>>> cyclic_find(0x61616162) +4 +``` + ## Pwntools 在 CTF 中的运用 +可以在下面的仓库中找到大量使用 pwntools 的 write-up: +[pwntools-write-ups](https://github.com/Gallopsled/pwntools-write-ups) + ## 参考资料 - [docs.pwntools.com](https://docs.pwntools.com/en/stable/index.html) diff --git a/doc/6.6_ppt.md b/doc/6.6_ppt.md new file mode 100644 index 0000000..c20dc99 --- /dev/null +++ b/doc/6.6_ppt.md @@ -0,0 +1,5 @@ +# PPT + +这些是我在 XDSEC 做分享的 PPT,主要内容取自 CTF-All-In-One,可作为辅助学习。 + +- [01 Fight with Linux](../ppt/01_fight-with-linux.pdf) diff --git a/doc/6_appendix.md b/doc/6_appendix.md index b69bd0e..9dc6fa4 100644 --- a/doc/6_appendix.md +++ b/doc/6_appendix.md @@ -5,3 +5,4 @@ - [6.3 更多资源](6.3_books&blogs.md) - [6.4 习题 write-up](6.4_writeup.md) - [6.5 Linux x86-64 系统调用表](http://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/) +- [6.6 PPT](6.6_ppt.md)