largebin attack学习
想读源码可以看看这里 达到的效果 2.30之前可以往任意两个地址写一个堆地址,2.30之后只能往一个任意地址写堆地址 利用条件 存在UAF,可以修改largebin的内容 两次申请的largebin大小不能相同 largebin的结构 要知道第一点,在largebin里,几个大小相近的chunk会用一个指针进行维护,通常其存放大小大于0x400的堆块,不过一般申请0x420以上的堆块,因为低版本0x400可能会被放到tcache里 在largebin里,除了原先的堆块结构,还新增了fd_next…
ret2dl理论学习
struct link_map { Elf64_Addr l_addr; char *l_name; Elf64_Dyn *l_ld;//Dynamic的地址 struct link_map *l_next; struct link_map *l_prev; struct link_map *l_real; Lmid_t l_ns; struct libname_list *l_libname; Elf64_Dyn *l_info[76];//l_info 里面包含的就是动态链接的各个表…
2020GKCTF domo个人wp(unlink+vtable劫持)
题目在buu上能找到远端环境 题目分析 看一下保护 good,保护全开 libc此题是2.23的 看一下内容 比较经典的菜单题,循环结束会开沙箱,禁用system,不过本题思路一仍然可以在循环内getshell,此沙箱可以暂时忽略,1、2、3、4分别对应增删改查,5是退出,不过我的打法仍然没有用到edit功能 增 sub_c16函数限制了此题不能修改mallochook和freehook。主体部分存在明显的off by null漏洞,可以借此实现堆块合并操作。结合循环条件可知,堆块下标从零计算,…
stackoverflow个人wp(修改stdin结构体)
该题在buu上可搜到原题 题目分析 main函数很简单,首先在reprintname函数里会输入name,接着把他打印出来,调试可发现利用字符串输出到\x00才截止可以泄露出__IO_stdout的地址,从而泄露libc基地址 构造适当payload,刚好可以泄露出IO_2_1_stdout,payload构造如下 p = process('./stackoverflow') libc = ELF('./libc-2.23.so') # p=remote('node5.buuoj.cn',284…
stdin、stdout学习
参考自[原创]IO-FILE中的stdin介绍-Pwn-看雪-安全社区|安全招聘|kanxue.com IO FILE 之任意读写 - 先知社区 (aliyun.com) IO FILE之fread详解-安全客 - 安全资讯平台 (anquanke.com) p *stdin $1 = { _flags = -72540024, _IO_read_ptr = 0x0,#缓冲区内还未被读取的数据起始位置 _IO_read_end = 0x0,#缓冲区内还未被读取的数据末尾位置 _IO_read_b…
万能orw
先上模版(2.29以前) payload = p64(pop_rax) + p64(2) # open payload += p64(syscall) + p64(pop_rdx_rsi) payload += p64(300) + p64(flagaddr) payload += p64(pop_rdi) + p64(3) payload += p64(pop_rax) + p64(0) # read payload += p64(syscall) + p64(pop_r13_r14_r15)…
沙箱
seccomp-tools dump ./文件名
linux系统调用号
32位程序 #ifndef _ASM_X86_UNISTD_32_H #define _ASM_X86_UNISTD_32_H 1 #define __NR_restart_syscall 0 #define __NR_exit 1 #define __NR_fork 2 #define __NR_read 3 #define __NR_write 4 #define __NR_open 5 #define __NR_close 6 #define __NR_waitpid 7 #define …
离散数学(手抄版复习资料)
温馨提示:以下所有资料都是我自己认为重要的或者不会的,并不全面,有些我很熟的没有抄上去,复习时还是以书本和练习题为主