AIKraft/Skills/format-string-exploitation

format-string-exploitation

Плейбук эксплуатации форматных строк. Применяется, когда функции семейства printf получают управляемые пользователем строки формата, что позволяет читать стек (%p/%s), записывать память (%n/%hn/%hhn), перезаписывать GOT/хуки и утекать canary/libc/PIE.

yaklang official Другое ★ 2.4k

Что делает навык

Плейбук эксплуатации уязвимостей форматных строк, позволяющий читать стек, записывать память и перезаписывать указатели через функции семейства printf. Применяется для получения информации (canary, libc, PIE) и достижения произвольной записи памяти для выполнения кода.

Когда применять

  • Чтение данных из стека с помощью спецификаторов %p и %s
  • Произвольная запись в память через спецификаторы %n, %hn, %hhn
  • Перезапись таблиц GOT или хуков (например, __malloc_hook) для получения RCE
  • Обход защиты FORTIFY_SOURCE и работа с 64-битными нуль-байтами
  • Комбинация с переполнением стека (stack-overflow-and-rop) для полного контроля

Как работает

  1. Идентифицировать уязвимый паттерн, где пользовательский ввод передается как строка формата в функции printf
  2. Использовать спецификаторы %p или %s для утечки адресов из стека (canary, libc, PIE)
  3. Применить спецификаторы %n, %hn или %hhn для записи значений в произвольные адреса памяти
  4. Сконструировать цепочку указателей или перезаписать GOT/хуки для выполнения произвольного кода
  5. Автоматизировать процесс с помощью pwntools, учитывая особенности 64-битных адресов и позиционных параметров

Примеры запросов агенту

Эксплуатируй форматную строку в бинарнике, чтобы прочитать canary из стека
Запиши адрес функции system в GOT с помощью спецификатора %n
Обойди FORTIFY_SOURCE и выполни произвольную запись в память через форматную строку

Что понадобится

  • pwntools
  • бинарный файл с уязвимостью форматной строки
  • доступ к исходному коду или отладочной информации (для точного расчета смещений)

Описание составлено по SKILL.md навыка, сверено 07.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «format-string-exploitation» из репозитория: # https://github.com/yaklang/hack-skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r format-string-exploitation/ ~/.claude/skills/format-string-exploitation/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.