【发布时间】:2017-08-13 20:20:39
【问题描述】:
我们有一段代码来说明缓冲区溢出绕过密码哈希的危险。我破解密码的输入包括通过命令行输入的一串十六进制字符,如下所示:
echo -ne "\xab\x94\x44..." | ./checkPassword
这在 checkPassword 中被解析:
scanf("%29s", password);
然后我用两者打印密码:
printf("\n%s", password):
和
for (i=0; i<29; i++) {
printf("%c ", password[i]);
}
checkPassword 使用 scanf 捕获输入字符串。我非常确定我用来生成破解字符串“\x...”的方法是正确的。但是,我注意到有时我仍然没有绕过密码。在打印出 checkPassword 读取的输入字符串后,我注意到诸如 \xc 之类的字符被解释为 \x00,如果它们没有被解释,我会绕过密码。我还没有找到任何解决或解释这个问题的方法。有没有人有任何想法?感谢您的任何建议
编辑:提供更多代码。
EDIT2: \xc 也意味着程序忽略它后面的任何字符。这不是导致问题的唯一字符,但我认为它们似乎都是“
【问题讨论】:
-
提供minimal reproducible example。我们无法推测我们看不到的代码。
-
添加了更多代码