stack smashing--canary报错利用

stack smashing--canary报错利用

一般这种都是考察点比较狭窄,因为这个漏洞在libc2.23以上就被修复了,漏洞产生的原因是因为当覆盖掉canary的时候程序会报错,程序会执行 __stack_chk_fail 函

数来打印 __libc_argv[0] 指针所指向的字符串,如果把这个字符串覆盖成flag地址那么就可以得到flag

那么我们看一下保护,这种canary保护都是开启的

32位ida载入

一次read一次printf就是格式化字符串漏洞了,而且程序给了后门函数,那么我们可以修改_stack_chk_fail的got表或者修改

__do_global_dtors_aux_fini_array_entry地址为后门函数地址来读取flag

找一下偏移就可以开始写脚本了

exp