日常导入查看位数:
IDA反编译:
函数分析:pwnme等于8则执行shell,目的是要将pwnme数据置为8,再加上printf,可以确定是格式化字符串漏洞。
格式化字符串需要寻找到pwnme地址(便于写入)以及在栈上的偏移量,gdb调试:
在进行&S输入时将AAAAAA输入,可以看见栈中偏移量是10,再加上pwnme要变成8,%n的用法是前面几个字符则将某地址数据修改成8,可以构建payload:
pwnme_addr (四个字符)+b'AAAA'+%10$n
writeup:
日常导入查看位数:
IDA反编译:
函数分析:pwnme等于8则执行shell,目的是要将pwnme数据置为8,再加上printf,可以确定是格式化字符串漏洞。
格式化字符串需要寻找到pwnme地址(便于写入)以及在栈上的偏移量,gdb调试:
在进行&S输入时将AAAAAA输入,可以看见栈中偏移量是10,再加上pwnme要变成8,%n的用法是前面几个字符则将某地址数据修改成8,可以构建payload:
pwnme_addr (四个字符)+b'AAAA'+%10$n
writeup: