corectf的一道题,见识到了格式化字符串的新用法%*d
指针残留,由不规范使用函数造成。
printf(“%*d”,&a,&b) 格式化字符串在rdi,a和b没有规定但会取rsi rdx中的值

do_printf函数中,只允许读入三个字节,printf here的rsi会残留到第二次printf,第二个printf此时rsi是一个占栈地址,数很大,输出会把缓冲区填满,缓冲区最后有libc地址,%s会直接把libc地址打印出来,拿到libc后直接输入system(调试有点费CPU,第一次遇到虚拟机卡死)



1 | from pwn import* |