c - 线性化攻击

标签 c security

我了解什么是线性化攻击以及它是如何执行的。我只是想清楚地了解下面的代码如何允许它,因为如果输入的字符串等于或大于 8,它应该以相同的迭代计数终止?

int main(int argc, const char *argv[])
{

int i;
boolean flag = true;
char serial [9] = “S123N456\n”;
if(strlen(argv[1]) < 8)
{
printf(“\nError try again.\n\n”);
exit(0);

}

for(i = 0; i < 8; ++i)
{

    if(argv[1][i] != serial[i])flag = false;

}

if(flag)
{

    printf(“\bSerial number is correct!\n\n”);

}

}

最佳答案

线性攻击是利用某些编码缺陷的攻击。如果上述代码在输入不正确的字符时结束,攻击者可以使用它来确定输入了多少个正确的字符。我和导师一起完成了这个过程,现在我发现,由于每次都会设置标志,如果 7 次中有 5 次不正确,则标志设置了 5 次,那么它就是不正确的。该尝试的运行速度比设置全部 7 次要快。因此,如果攻击者尝试第一个字符的所有可能解决方案,并为字符串的其余部分插入标准字符。使用正确的第一个字符的尝试将运行得稍快一些。对每个字符应用相同的逻辑,最终会得到序列号。

关于c - 线性化攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534321/

相关文章:

c -/**/评论比//更受欢迎吗?

c - 如何找到更好的算法来计算非常大的矩阵的特征值和特征向量

c - C 语言中的 mpi_allgather 和 mpi_pack

php - 对使用 SSL 感到困惑

c - 错误的 printf 类型仍然打印正确的值

c++ - 从 CERN ROOT 中的文本文件绘制 6 个图表

security - HTTPS (HTTP + SSL) 中的查询字符串参数安全吗?

c++ - 获取目录中最早的文件

javascript - 在 IE6 中输入键不会提交表单

security - 访问控制列表最佳实践 - ACL - 为攻击站点的用户设置负面角色