#define _GNU_SOURCE
#include
#include
#include
int my_gets(char *buf) {
int i = 0;
char c;
while (read(0, &c, 1) > 0 && c != '\n') {
buf[i++] = c;
}
buf[i] = '\0';
return i;
}
int main() {
int cookie;
char buf[16];
printf("&buf: %p, &cookie: %p\n", buf, &cookie);
my_gets(buf);
if (cookie == 0x000D0A00) {
printf("%s","You win!\n");
}
return 0;
}
< /code>
. Обычно цель состоит в том, чтобы перезаписать переменную cookie, чтобы достичь значения 0x000d0a00, но это значение содержит специальные символы, которые затрудняют прямую инъекцию. Поэтому вместо этого моя цель состоит в том, чтобы прыгнуть непосредственно, чтобы адресовать 0x08049232, чтобы напечатать «Вы выиграете!» Без необходимости модифицировать cookie.gcc -m32 -z execstack -fno-stack-protector -no-pie -o stack4 stack4.c
(gdb) break *0x08049232
Breakpoint 1 at 0x8049232
(gdb) run <
Подробнее здесь: [url]https://stackoverflow.com/questions/79570284/how-to-locate-and-overwrite-eip-in-a-buffer-overflow-lab-using-gdb-14-2[/url]
У меня есть следующий код как часть буфера переполнения CTF Challenge: < /p> [code]#define _GNU_SOURCE #include #include #include int my_gets(char *buf) { int i = 0; char c; while (read(0, &c, 1) > 0 && c != '\n') { buf[i++] = c; } buf[i] = '\0'; return i; }
if (cookie == 0x000D0A00) { printf("%s","You win!\n"); } return 0; } < /code> . Обычно цель состоит в том, чтобы перезаписать переменную cookie, чтобы достичь значения 0x000d0a00, но это значение содержит специальные символы, которые затрудняют прямую инъекцию. Поэтому вместо этого моя цель состоит в том, чтобы прыгнуть непосредственно, чтобы адресовать 0x08049232, чтобы напечатать «Вы выиграете!» Без необходимости модифицировать cookie.gcc -m32 -z execstack -fno-stack-protector -no-pie -o stack4 stack4.c (gdb) break *0x08049232 Breakpoint 1 at 0x8049232 (gdb) run <
У меня есть следующий код как часть буфера переполнения CTF Challenge:
#define _GNU_SOURCE
#include
#include
#include
int my_gets(char *buf) {
int i = 0;
char c;
while (read(0, &c, 1) > 0 && c != '\n') {
buf = c;
}
buf = '\0';
return i;
}
У меня есть следующий код как часть буфера переполнения CTF Challenge:
#define _GNU_SOURCE
#include
#include
#include
int my_gets(char *buf) {
int i = 0;
char c;
while (read(0, &c, 1) > 0 && c != '\n') {
buf = c;
}
buf = '\0';
return i;
}
У меня есть оболочка GDB, предоставляемая IDE (VSCode). Опыт отладки здесь невелик, поэтому я хотел бы использовать GDB из командной строки. Но из-за сложности системы сборки и способа вызова команд я не знаю, какие аргументы были переданы в gdb....
Среда: WSL2 Ubuntu 22.02
Мой проект запускается в контейнере Docker из WSL2.
Планировщик в моем проекте отвечает за запуск всех приложений.
gdbserver запускается из планировщика со следующими аргументами:
:1234
И из WSL2 я пытаюсь подключиться к...
Я загрузил последнюю версию ядра (6.11.3) и установил Qemu на машину с Ubuntu.
Какие настройки .config мне использовать, чтобы можно было удаленно отлаживать ядро?
Я пробовал использовать настройки из этого поста: Как отладить ядро Linux с...