利用printf突破canary保护
编译:gcc -m32 -no-pie -fstack-protector-all -o printf red.c
设置断点,输入三个 R,查看栈
相对于栈顶的第15个位置,ebp-0xc是反编译func函数存放canary保护的地址
%k$p 将更改对应顺序,与格式化字符串后的第k个参数进行对应,并以地址形式解析参数值
运行,输入$08x,然后查看输出
输出为 2a539a00,查看堆栈:
编写exp,查看canary偏移
查看exploit首地址
运行结果: