保护全开
功能1
可以申请chunk,然后会给chunk地址。
功能2
功能2有一个scanf的任意写。
功能3是一个输出。
利用的就是scanf的任意写。
我们知道scanf会把我们的输入的字符串当成第一个参数,如果还有需要,会先从五个寄存器去找,然后再去找栈中的数据,那我们也去看一下寄存器或者栈上的数据有没有可以利用的。
偏移8的地方显然有一个_IO_2_1_stdout_地址,所以我们可以把他当作参数做一个任意写,劫持_IO_FILE然后泄露libc,再来一次把malloc_hook地址写上去,劫持malloc_hook就好。
当然我这个跟比赛不是一个环境,我记得比赛偏移是7
exp
# -*- coding: utf-8 -*-