История изменений
Исправление rtxtxtrx, (текущая версия) :
с чего ты решил что они работают? об эксплойтах обычно узнают через 5-10 лет после того как проэксплатируют все кому не лень.
Вот пример уязвимого кода:
vuln.c
#include <stdio.h>
#include <string.h>
void vulnerable_function(const char *input) {
char buffer[64];
// Копируем входные данные в буфер без проверки длины
strcpy(buffer, input);
printf("Buffer: %s\n", buffer);
}
void secret_function() {
printf("Secret function has been called!\n");
}
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <input>\n", argv[0]);
return 1;
}
vulnerable_function(argv[1]);
return 0;
}
В результате переполнения буфера можно вызвать любую функцию, зная ее адрес:
./vuln $(python -c 'print "A"*64 + "<адрес функции>"')
Проблема лишь с его вычислением из-за ASLR, механизма, который меняет адреса при каждом вызове программы… Но чем сложнее програ, тем больше возможностей сделать «невозможное»
Я не знаю как тебя какое-то говноядро защитит, если там не коммитили 3 года, а уязвимости выше 1 год
Исходная версия rtxtxtrx, :
с чего ты решил что они работают? об эксплойтах обычно узнают через 5-10 лет после того как проэксплатируют все кому не лень.
Вот пример уязвимого кода:
vuln.c
#include <stdio.h>
#include <string.h>
void vulnerable_function(const char *input) {
char buffer[64];
// Копируем входные данные в буфер без проверки длины
strcpy(buffer, input);
printf("Buffer: %s\n", buffer);
}
void secret_function() {
printf("Secret function has been called!\n");
}
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <input>\n", argv[0]);
return 1;
}
vulnerable_function(argv[1]);
return 0;
}
В результате переполнения буфера можно вызвать любую функцию:
./vuln $(python -c 'print "A"*64 + "<адрес функции>"')
Проблема с его вычислением из-за ASLR, механизма, который меняет адреса при каждом вызове программы…
Я не знаю как тебя какое-то говноядро защитит, если там не коммитили 3 года, а уязвимости выше 1 год