C(Windows)中printf(0)的安全含义
我注意到在Windows平台上的C中printf(0)可以使任何程序崩溃,因为参数中没有提到格式说明符 通常我看到它会触发\uuuu invoke\u watson()C(Windows)中printf(0)的安全含义,c,security,C,Security,我注意到在Windows平台上的C中printf(0)可以使任何程序崩溃,因为参数中没有提到格式说明符 通常我看到它会触发\uuuu invoke\u watson() 考虑到printf()的参数无法被攻击者控制,我想知道是否存在与此类场景相关的安全隐患。这里没有安全隐患 printf(0)正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。这里没有安全隐患 printf(0)正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。请解释为什
考虑到printf()的参数无法被攻击者控制,我想知道是否存在与此类场景相关的安全隐患。这里没有安全隐患
printf(0)
正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。这里没有安全隐患
printf(0)
正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。请解释为什么任何开发人员都会调用“printf(0);”?我发现*(int*)NULL=0
可以使任何程序崩溃,您甚至不需要printf
!或者更简单,所以可以abort()代码><编码>printf(0);可以使任何程序崩溃,因为在参数
中没有提到格式说明符,您误读了它。如果没有格式,它甚至不会编译。有一种格式,正好是空指针。这确实是UB,但不是因为缺少格式。谢谢!现在我明白了。它崩溃是因为空的取消引用,而不是格式说明符。请解释为什么任何开发人员都会调用“printf(0);”?我发现*(int*)NULL=0
可以使任何程序崩溃,您甚至不需要printf
!或者更简单,所以可以abort()代码><编码>printf(0);可以使任何程序崩溃,因为在参数
中没有提到格式说明符,您误读了它。如果没有格式,它甚至不会编译。有一种格式,正好是空指针。这确实是UB,但不是因为缺少格式。谢谢!现在我明白了。它崩溃的原因是空解引用,而不是格式说明符。崩溃通常会构成安全问题,因为它们可用于创建拒绝服务攻击。崩溃通常会构成安全问题,因为它们可用于创建拒绝服务攻击。