Исходя из предыдущего вопроса, я пытаюсь использовать уязвимость для проверки пароля.Я в основном понял проблему, но у меня есть некоторые проблемы, связанные с ее решением.Код с этой уязвимостью выглядит следующим образом:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>
int main(int argc, char **argv) {
char correct_hash[16] = {
0xd0, 0xf9, 0x19, 0x94, 0x4a, 0xf3, 0x10, 0x92,
0x32, 0x98, 0x11, 0x8c, 0x33, 0x27, 0x91, 0xeb
};
char password[16];
printf("Insert your password: ");
scanf("%29s", password);
MD5(password, strlen(password), password);
if (memcmp(password, correct_hash, 16) == 0) {
printf("Correct Password!\n");
} else {
printf("Wrong Password, sorry!\n");
}
return 0;
}
Поскольку scanf с радостью примет нулевой байт как часть строки и не будет рассматривать его как пробел (таким образом, не прекратит чтение дополнительных байтов вstring) Мне нужно только сгенерировать строку, которая соответствует требуемому окончанию \ x00 \ x91 \ xeb.
Мне нужна строка, которая при хешировании создает набор с нужным окончанием.Как я могу решить такую проблему в Python, так как я впервые использую Python.Или есть даже более простой способ решить эту проблему?