Эксплойты переполнения буфера в Ubuntu, пытающиеся заполнить ячейку памяти, отличную от "\ x00", приводят SIGABRT - PullRequest
0 голосов
/ 09 июля 2020

Я пробовал простой код C для тестирования атак переполнения буфера в Ubuntu

#include <stdio.h>
#include <string.h>
int main (int argc, char **argv)
{
    char buffer[500];
    strcpy(buffer, argv[1]);
    return 0;
}

Итак, когда я пытаюсь передать адрес памяти в буфер, чтобы при его переполнении мой программа должна привести меня к этому месту, поскольку это адрес возврата (поскольку он был перезаписан из-за переполнения стека)

Когда мы пытаемся передать нулевые значения «\ x00» в return, затем он выходит с простым SIGSEGV (как и ожидалось)

(gdb) r $(python -c 'print "\x00" * 508')
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/harshit/Downloads/Hacking/Buffer Overflow Attacks/vuln $(python -c 'print "\x00" * 508')
/bin/bash: warning: command substitution: ignored null byte in input

Program received signal SIGSEGV, Segmentation fault.
__strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:298
298 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory.
(gdb) 

Но когда мы редактируем возвращаемое значение с другим адресом памяти, кроме "\ x00", например "\ x90", система обнаруживает эксплойты буфера и возвращает SIGABRT

(gdb) r $(python -c 'print "\x90" * 508')
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/harshit/Downloads/Hacking/Buffer Overflow Attacks/vuln $(python -c 'print "\x90" * 508')
*** stack smashing detected ***: <unknown> terminated

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51  ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.

Вот ссылка на видео, за которой я следил: YouTube

У меня вопрос, каковы возможные обходные пути обхода этого SIGABRT, убедитесь, что наша попытка эксплойта / взлома работает;)

...