题目地址:请看pwn栈溢出基础练习题——1 ;放了本博客的所有练习题目
fmtstr2 —> goodluck
64位,打开了canary,栈不可执行,地址没有随机化
放入ida,分析程序
程序流程为读入一个txt文件,并将文件信息保存到v10中,程序读入我们输入,若输入和v10即flag相同,则输出flag,由程序可知不可能输入和flag相同,但我们知道flag存在v10中,且printf()的只有一个参数并且我们可控,则存在printf()漏洞
gdb调试:
由于这是64位程序,前6个参数被存入寄存器中,并不在栈中,并且发现flag在后面3个位置,但注意应该是6+3给参数位置
所以只要读取第9个参数即可,输入%9$s
tis:找不到可以用暴力法试,一般不会太高