1.easynote
64位的,给了libc库,开了canary,拖入ida分析,在edit函数中存在堆溢出
delete函数中存在uaf漏洞
通过uaf漏洞泄露出main_arena地址,获取libc基址,system
因为有堆溢出和uaf,可以伪装fastchunk,通过gdb调试0x602095地址的值为0x7f,可伪装
修改chunk_ptr数组里的值为free_got,然后把它修改为system,再free时即可拿到shell
2.fooooood
64位,也给了libc库,开了canary和pie地址随机 拖入ida看存在格式化字符串漏洞,有3次
通过gdb调试可泄露程序基址,栈地址,libc基址,然后第一次用格式化字符串泄露它们
通过ida分析和gdb调试i在rbp-c中,它是int类型占4字节,还有两次格式化字符串漏洞,可通过这两次修改为i的值,第一次是把args参数链修改为i地址,第二次是修改i值即可再次使用格式化字符串漏洞
37为第二次修改i值的位置。因为给了Libc,修改返回地址的低4字节为one_gadget的低4字节即可拿到shell