如何在C++;? 我看到一个结论,当攻击者设计一种输入函数运行任意代码时,使用C风格省略号的C++变量函数可能是脆弱的。但如何做到这一点呢?我的意思是,如何设计一个攻击向量来利用漏洞?

如何在C++;? 我看到一个结论,当攻击者设计一种输入函数运行任意代码时,使用C风格省略号的C++变量函数可能是脆弱的。但如何做到这一点呢?我的意思是,如何设计一个攻击向量来利用漏洞?,c++,variadic-functions,C++,Variadic Functions,如果你是一个格式字符串漏洞来运行任意代码,它的工作原理是: printf允许您提供与参数计数不匹配的格式字符串。在这种情况下,变量被从堆栈中拉出。函数调用(如printf)是通过将函数的所有参数放入堆栈来完成的,大致如下所示: (low addresses) ^^^^^^ stack growth direction ^^^^^^ ---------printf-stack------------ printf function arguments stack base pointer of

如果你是一个格式字符串漏洞来运行任意代码,它的工作原理是:

printf允许您提供与参数计数不匹配的格式字符串。在这种情况下,变量被从堆栈中拉出。函数调用(如printf)是通过将函数的所有参数放入堆栈来完成的,大致如下所示:

(low addresses)
^^^^^^ stack growth direction ^^^^^^

---------printf-stack------------
printf function arguments
stack base pointer of caller
return address for when printf() ends
---------printf-stack------------ <-- stack base pointer register (cpu)

---------caller-stack------------ 
stack variables (int a = 5, char cstr[500] = "hello world!", etc)
caller function arguments
stack base pointer of caller-caller
return address for when caller() ends
---------caller-stack------------

(high addresses)
(低地址)
^^^^^^堆栈生长方向^^^^^^
---------printf栈------------
printf函数参数
调用方的堆栈基指针
printf()结束时的返回地址

---------printfstack------------请提供一些参考(如URL)。我甚至不明白你的意思。您的问题取决于标准草案(适用于C)或标准草案(适用于C++)中未规定的。请注意,在许多国家,网络攻击是非法的。也明白C或C++编译器可以做的。你可以写你的C或C++代码更好的优化。@ Baselestalykyv痒网络攻击是非法的,只要你没有权限。你可以随心所欲地长时间、长时间、频繁地破解你自己的东西。这是了解计算机如何工作并了解编码最佳实践的好方法。