一步一步学pwn之栈溢出利用(2)

SSP(Stack Smashes Protect) leak

1.利用的是_stack_chk_fail中的fortify的报错泄露信息,在栈溢出的时候数组月结写入,导致Canary值被修改,在函数退出的时候检查canary,发现canary被修改,函数不能安全返回,call到stack_chk_fail打印argv[0]这个指针指向的字符串,默认是程序的名字。

2.如果我们把它覆盖为flag的地址时,它就会把flag给打印出来

3.注意不要用原来flag的地址覆盖,因为原来存储flag的地址会被overwrite,但是由于ELF的映射方式,此flag会被映射两次,另一个地方的flag的内容不会变,原因是stack_chk_fail会调用libc_message

4.主动触发栈保护,知道覆盖到argv[0]的值,实现任意内存读取。

你可能感兴趣的:(一步一步学pwn之栈溢出利用(2))