摘要:
每个页的大小: 2^12 = 4096 Bytes 每个地址的大小: 8 Bytes 每个页能容纳:2^9 = 512 个地址 需要一个 9bit 的字段来索引映射表 一般来说,如果页面大小为 2^k,那么一个页面可以容纳 k 3 个指针 阅读全文
摘要:
```static void_int_free (mstate av, mchunkptr p, int have_lock){ INTERNAL_SIZE_T size; /* its size (要 free 的 chunk 的大小)*/ mfastbinptr *fb; /* associated fastbin (关联的 fastbin)*/ m... 阅读全文
摘要:
_int_malloc 的参数: mstate: av 是指向记录当前堆状态的结构体的指针 bytes 就是要申请的 chunk 的大小(并不是用户 malloc 的大小) 下面提到的 nb 变量是一个 size_t ,也就是 一个 unsigned int 类型的变量,代表 malloc 的 ch 阅读全文
摘要:
前几天我跟我队友写了一道逆向,说是逆向题其实是个密码学的题目 是这样的: 出题人构造了一个 AES cipher 给出了密钥(key),明文(plainText),密文(cipherText),使用的是 密码分组链接 CBC(Chiper Block Chaining) 模式。要求出 初始化向量 I 阅读全文
摘要:
unlink 在 _int_free 中的调用是这样的:unlink(av, p, bck, fwd); unlink 的原理(其实就是链表的操作) 1. 先把传入的块 P 的 fd 和 bk 指针存到参数的 FD ,BK,这两个参数其实是 chunk pointor。 2. 检查 自己的 meta 阅读全文
摘要:
昨晚脑子抽了,突然想扒扒 映射文件 刚刚开始我是尝试 mmap 一个文件,实现对内存的读写达到读写文件内容的目的,踩了几个坑 1. 我想的是读写,然后我看文章的时候我看到的是:用 open 得到一个 文件描述符,demo 上写的是 我信了然后我也照写,后面我发现我怎么都不能映射成功,后面我才意识到 阅读全文
摘要:
我大概看完了从 glibc 的 malloc 到内核对页的操作原理,现在我从代码的角度去分析它们的工作 malloc 的分析我就不做了,我现在直接从 malloc 对应的系统调用去看,malloc 怎么去操作堆 调用 malloc 是分成两种情况,当 malloc(size) 1. size sys 阅读全文
摘要:
via:https://nickdesaulniers.github.io/blog/2018/10/24/booting a custom linux kernel in qemu and debugging it with gdb/ 先编译内核 选择 这个只是在 linux 5.6 下面的选法, 阅读全文
摘要:
刚刚换了新系统(原本这些实验是在另一台电脑上做的) 今天编译 glibc,遇到的麻烦,以及解决方案 编译系统一样版本的 glibc 没有遇到问题,直接编译安装成功 这些问题是我在编译 glibc2.23 的时候遇到 1. 因为 汇编器 版本不同出的问题 这个问题我 patch 源码 我查到的 完整的 阅读全文
摘要:
via:https://ropemporium.com/challenge/ret2csu.html ret2csu We're back in ret2win territory, but this time without the useful gadgets. How will we popu 阅读全文
摘要:
via:https://ropemporium.com/challenge/pivot.html pivot There's only enough space for a three link chain on the stack but you've been given space to st 阅读全文
摘要:
via:https://ropemporium.com/challenge/fluff.html fluff The concept here is identical to the write4 challenge. The only difference is we may struggle t 阅读全文
摘要:
via:https://ropemporium.com/challenge/badchars.html badchars An arbitrary write challenge with a twist; certain input characters get mangled before fi 阅读全文
摘要:
via:https://ropemporium.com/challenge/write4.html write4 Our first foray into proper gadget use. A call to system() is still present but we'll need to 阅读全文
摘要:
via:https://ropemporium.com/challenge/split.html split In this challenge the elements that allowed you to complete the ret2win challenge are still pre 阅读全文
摘要:
via:https://ropemporium.com/challenge/ret2win.html ret2win Locate a method within the binary that you want to call and do so by overwriting a saved re 阅读全文
摘要:
STACK FIVE As opposed to executing an existing function in the binary, this time we’ll be introducing the concept of “shell code”, and being able to e 阅读全文
摘要:
STACK FOUR Stack Four takes a look at what can happen when you can overwrite the saved instruction pointer (standard buffer overflow). Hints The saved 阅读全文
摘要:
STACK THREE Stack Three looks at overwriting function pointers stored on the stack. Hints You can use gdb and objdump to determine where the complete_ 阅读全文
摘要:
STACK ONE This level looks at the concept of modifying variables to specific values in the program, and how the variables are laid out in memory. This 阅读全文