两道格式化字符串漏洞利用入门题,绕过canary的一种姿势,不知道写的对不对,请大家多指正。
0x01 Canary
保护
开启了NX和canary。
题目分析
有个getshell函数,vuln函数里面明显的栈溢出和格式化字符串漏洞,所以可以利用printf函数泄露出canary的值,然后利用栈溢出填充canary,控制返回指针执行getshell函数。
栈
从栈的情况看,var_8(即canary的值)距离栈顶120个字节,120/8 =15,64位Linux前六个参数用寄存器传递,后面的才从栈上读取,所以要使var_8是printf函数的第22个参