在OJ做题的时候遇到了SSP(Stack Smashing Protector) leak
。
因为第一次遇到,所以记录一下。
> 简单的来说,SSP leak 就是通过故意触发canary的保护来输出我们想要地址上的值。
先看一下程序开了哪些保护
发现Canary和NX都开了
如果canary保护被触发,就会调用___stack_chk_fail
这个函数(libc库自带)
先来触发一下canary保护试一下
我们来看一下源码
__stack_chk_fail :
void
__attribute__ ((noreturn))
__stack_chk_fail (void) {
__fortify_fail ("stack smashing detected");
}
fortify_fail