ctf
文章平均质量分 52
weixin_44164182
这个作者很懒,什么都没留下…
展开
-
heap general tricks
1. malloc1.1 malloc leakingmalloc分配一个chunk时,不对chunk中的内容进行清空操作,通过打印一个来自bin中的chunk,可能得到敏感信息。例如,如果malloc分配的chunk来自unsortied bin,则该chunk中将保存unsorted bin头指针的地址,这个指针在libc中的偏移是固定的,通过这个指针可以泄露libc的加载地址。unsorted bin头指针相对于malloc_hook的偏移为对于有tcache的libc:0x70对于没有原创 2021-09-15 21:51:10 · 109 阅读 · 0 评论 -
File-Stream Oriented Programming
File-Stream Oriented Programming文件描述符的结构Linux中文件描述符的结构,定义在glibc/libio/bits/types/struct_FILE.h中和glibc/libio/libioP.h中struct _IO_FILE{ int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ /* The following pointers correspond原创 2021-09-15 20:36:20 · 125 阅读 · 0 评论 -
cisn_2019_es_3——ROP栈迁移
ROP栈迁移通过leave和ret指令,将栈帧劫持到指定地址。一般用于存在溢出,但可溢出的字节数不足以写入完成ROP chain的情况。通过栈帧劫持,在可供写入的缓冲区内完成ROP chain构造,然后将栈帧劫持到指定地址,完成控制流劫持。leave =mov esp,ebppop ebpret=pop eip通过栈帧劫持,存在栈溢出的位置最少只需溢出两个dword(qword in x64)就可以完全控制程序执行流如上程序,char s处存在两个dword的溢出,可以覆盖last_原创 2021-07-17 14:52:02 · 205 阅读 · 0 评论 -
pwntools加载指定版本libc
关于在Linux中使用其他版本的libc执行二进制程序1.查看本机libc版本ldd --version获取所需目标版本libc,可参考https://github.com/niklasb/libc-database2. libc文件和libc-dbg文件libc.so文件为包含代码的、加载进目标进程地址空间的文件,一般发布时不带调试信息,直接使用这种so文件加载,在pwndbg中使用bin、heap等命令将提示无符号信息。bins: This command only works w原创 2021-07-12 16:56:23 · 3642 阅读 · 2 评论 -
XCTF pwn stack2
此处看v13数组的起始地址为esp-70,本程序带有canary保护,32位,则返回地址的起始地址应推算为&v13+70+4,但在该函数的返回地址前有特殊指令此处更改了栈指针,使上述推算错误。为确定该返回地址相对于v13数组地址的偏移,应在执行retn前下断点动态调试,根据当时esp中指令确定tip:推算函数返回地址时应在汇编语言层面确定,执行ret前是否手动修改了esp的值最准确的得到返回地址的方法是通过在ret前下断点动态调试,当前esp中的值为返回地址的地址...原创 2021-05-03 00:50:08 · 141 阅读 · 0 评论 -
XCTF Windows_Reverse1
主函数中接收输入后,调用sub_401000后进行判断,即sub_401000执行了关键逻辑,根据用户输入生成待判断的字符串。调用时分别使用堆栈和寄存器传入了两个main函数堆栈的地址,分别是输入字符串地址(堆栈)和执行sub_401000后生成的字符串的保存地址(寄存器ecx)。生成的字符串来自template_string,并以某种方式按照用户输入进行索引生成,其中template_string如下生成字符串的索引为template_string[ptr_output[v4]]v4=raw.原创 2021-02-11 13:37:19 · 211 阅读 · 1 评论 -
XCTF maze
XCTF mazex86 assembly operator:LEAload effective addresslea eax, [ebx * 2 + 10 + ecx *3]等价于mov eax, ebx * 2 + 10 + ecx *3下方表达x86汇编不支持,且使用lea赋值不影响其他寄存器和标志位寄存器tricklea eax, [eax * 100 + 3]...原创 2021-02-06 13:09:31 · 124 阅读 · 0 评论 -
XCTF Recho
XCTF RechoROP构造linux系统调用from pwn import *import timefrom ctypes import *# context.update(log_level='debug', timeout='2')context.log_level = 'debug'context.timeout = 2# r = process('./Recho')r = remote('220.249.52.134', 54741)elf = ELF('./Recho'原创 2021-01-02 12:25:16 · 232 阅读 · 2 评论