Переполнение буфера: генерация случайной строки, которая при хешировании создает второй набор с необходимым окончанием (например, \ x00 \ x91 \ xeb) - PullRequest
0 голосов
/ 04 апреля 2019

Исходя из предыдущего вопроса, я пытаюсь использовать уязвимость для проверки пароля.Я в основном понял проблему, но у меня есть некоторые проблемы, связанные с ее решением.Код с этой уязвимостью выглядит следующим образом:

#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.Или есть даже более простой способ решить эту проблему?

...