该死的猫猫!!!本来一开始想拿apple2去打,不想学cat了,于是自信的套了一通板子之后却怎么也出不了。究其原因是因为这个题是个白名单,并且没有exit,这就导致只能通过malloc_assert去触发FSOP,然而走malloc_assert和exit这两个函数的IO调用链有些区别,虽然两者都要利用largebin attack去修改一个值,但前者修改的是_IO_list_all的值,后者修改的是stderr的值,后续的函数执行也有区别。在malloc_assert的时候会先触发__fxpr…
题目分析 增删改查都有,存在uaf,可以直接largebin attack 禁用了open,openat,execve等 思路分析 largebin attack之后把_IO_list_all改成堆地址,接着打一个apple2即可劫持程序控制流,但是由于程序禁用了open和openat2,所以常规的orw不能用,故一下有两个思路 1.利用openat2系统调用代替open,调用号为437,其函数原型如下 ssize_t openat2(int dfd, const char* filename,…
先上模版(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)…