Exploiting Tools
Last updated
Last updated
Вивчайте та практикуйте хакінг AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте хакінг GCP: Навчання HackTricks GCP Red Team Expert (GRTE)
Ви можете за бажанням скористатися цим форком GEF, який містить більше цікавих інструкцій.
Під час налагодження GDB матиме трохи відмінні адреси від тих, які використовує бінарний файл при виконанні. Ви можете зробити так, щоб у GDB були ті самі адреси, виконавши наступне:
unset env LINES
unset env COLUMNS
set env _=<шлях>
Вкажіть абсолютний шлях до бінарного файлу
Використовуйте експлойт бінарного файлу, використовуючи той самий абсолютний шлях
PWD
та OLDPWD
повинні бути однаковими під час використання GDB та під час експлуатації бінарного файлу
Коли у вас є статично зв'язаний бінарний файл, всі функції будуть належати бінарному файлу (і не зовнішнім бібліотекам). У цьому випадку буде складно визначити послідовність, яку слідує бінарний файл, наприклад, для запиту введення користувача.
Ви можете легко визначити цю послідовність, запустивши бінарний файл з gdb до тих пір, поки вас не попросять ввести дані. Потім зупиніть його за допомогою CTRL+C та використайте команду bt
(backtrace) для перегляду викликаних функцій:
gdbserver --multi 0.0.0.0:23947
(в IDA вам потрібно вказати абсолютний шлях до виконуваного файлу на машині з Linux та на машині з Windows)
Ghidra дуже корисний для знаходження зсуву для переповнення буфера завдяки інформації про позицію локальних змінних.
Наприклад, у наведеному нижче прикладі переповнення буфера в local_bc
вказує на те, що вам потрібен зсув 0xbc
. Більше того, якщо local_10
є куки-запобіжником, це вказує на те, що для перезапису його з local_bc
є зсув 0xac
.
Пам'ятайте, що перші 0x08, звідки зберігається RIP, належать RBP.
Отримайте кожен опкод, що виконується в програмі.
gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2 --> Компіляція без захисту -o --> Вивід -g --> Зберегти код (GDB зможе його побачити) echo 0 > /proc/sys/kernel/randomize_va_space --> Вимкнути ASLR в Linux
Для компіляції shellcode: nasm -f elf assembly.asm --> повертає ".o" ld assembly.o -o shellcodeout --> Виконуваний файл
-d --> Розібрати виконуваний файл -Mintel --> Синтаксис Intel -t --> Таблиця символів -D --> Розібрати все -s -j .dtors --> секція dtors -s -j .got --> секція got -D -s -j .plt --> секція plt -TR --> Релокації ojdump -t --dynamic-relo ./exec | grep puts --> Адреса "puts" для зміни в GOT objdump -D ./exec | grep "VAR_NAME" --> Адреса статичної змінної.
Виконайте ulimit -c unlimited
перед запуском моєї програми
Виконайте sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t
sudo gdb --core=<path/core> --quiet
ldd executable | grep libc.so.6 --> Адреса (якщо ASLR, то вона змінюється кожен раз) for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done --> Цикл для перевірки, чи часто змінюється адреса readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system --> Зсув "system" strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh --> Зсув "/bin/sh"
strace executable --> Функції, які викликаються виконуваним файлом rabin2 -i ejecutable --> Адреса всіх функцій
У папці IDA ви знайдете виконувані файли, які можна використовувати для відлагодження бінарного файлу в середовищі Linux. Для цього перемістіть виконуваний файл linux_server
або linux_server64
на віддалений сервер Linux та запустіть його всередині папки, що містить бінарний файл:
Потім налаштуйте відлагоджувач: Відлагоджувач (віддалений linux) --> Опції процесу...:
Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)