板子题,主要设了两个限制:1. add 时只能 add 0x500 - 0x520 大小的堆块;2. show 只能 show 出 8 个 Byte. house of apple2 梭就完了。 Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PI…
非常友好的堆题,uaf 直接用,libc 和 heap 地址随便拿,但是故意搞了个沙箱,不能使用 execve 只能打 orw. 由于 orw 需要较长的执行链,所以一般打 ROP 会比较方便。打 ROP 就要获取栈地址,这个在获得 libc 地址后可以通过 leak environ 变量中的内容实现。 Arch: amd64-64-little …
heack Arch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: NX enabledPIE: &n…
2.39 malloc.c 中的源代码: typedef struct tcache_entry{ struct tcache_entry *next; /* This field exists to detect double frees. */ uintptr_t key; // uintptr_t 就是 unsigned int,2.2…
参考链接:浅析Large_bins_attack在高低版本的利用 进入 largebin 的条件: 无 tcache 或 tcache 已经被填满:最小 0x200 存在 tcache 且 tcache 未被填满(7 个 chunk):最小 0x410 largebins 中含有 63 个 bin , 总体又被分成 6 个组,每个组对应一个区间。只…
IO_FILE 相关结构体源代码 struct _IO_FILE{ int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ /* The following pointers correspond to the C++ streambuf protoco…
Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled libc 是 2.23 的,比较古早。 void __fastcall __noreturn main(int a1, char **a2, char **a3) {…
int __fastcall main(int argc, const char **argv, const char **envp) { TablePage *v3; // rbx void *Page; // rax __int64 v5; // rdx Record *v6; // rax __int16 *v7; // rax size_t…
[未解决] 两道题同为 2.27 版本的 libc,为何 signin2heap 的 tcache 检查了 double free,而 HITCON_2018_children_tcache 没有检查?问题出在哪里? Signin2Heap 题目附件:Signin2Heap libc 版本:2.27 Arch: amd64-64-little RE…
变种堆题 Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000) 32 位,没开 PIE 奇怪的 menu 函数,ida 反编译失败,不过能看懂就行。 原程序显然是用 C++ 写的。 int __cdec…