предлагаю, по аналогии с разделом программирование и разработка, задавать короткие вопросы, связанные с эксплуатацией уязвимостей класса memory corruption, в том числе вопросы по написанию шеллкода.
сам могу подсказывать как по win32, так и по никсам. но кодить за вас ничё не буду. а то есть любители просить эксп под какой-нибудь CVE. ну или уникумы, которым нужен шеллкод "на typescript + babel.js с компиляцией в облаке воцап."
мне пока спросить особо нечего, поэтому просто напишу пару готовых ответов на вопросы, с которыми ко мне не так давно обращались. заодно будет понятно, какой формат общения я имею в виду.
q: пишу шеллкод под Win32 на Си в MSVC. получаю PEB через mov eax, fs:[0x30]. а как получить PEB на x64?
a: PPEB peb = (PPEB)__readgsqword(0x60);
после рефакторинга:
q: ищу модуль по хэшу. взял из инета сниппеты find_module_by_hash и ror13_hash, но в некоторых случаях не находит kernel32.dll
a: во встречающихся в сети сниппетах может отсутствовать учёт регистра символов, при том что kernel32.dll может быть подгружен как "KERNEL32.DLL", то есть имя либы в верхнем регистре.
рабочий сниппет функции с багфиксом:
для поиска функций по хэшу, конечно же, уже никакой юникод не нужен, а регистр символов всегда такой, каким мы привыкли его видеть.
думаю по этим двум примерам формат понятен - без флуда и с конкретикой.
сам могу подсказывать как по win32, так и по никсам. но кодить за вас ничё не буду. а то есть любители просить эксп под какой-нибудь CVE. ну или уникумы, которым нужен шеллкод "на typescript + babel.js с компиляцией в облаке воцап."
мне пока спросить особо нечего, поэтому просто напишу пару готовых ответов на вопросы, с которыми ко мне не так давно обращались. заодно будет понятно, какой формат общения я имею в виду.
q: пишу шеллкод под Win32 на Си в MSVC. получаю PEB через mov eax, fs:[0x30]. а как получить PEB на x64?
a: PPEB peb = (PPEB)__readgsqword(0x60);
после рефакторинга:
C:
#if defined(_WIN64)
PPEB peb = (PPEB)__readgsqword(0x60);
#else
PPEB peb = (PPEB)__readfsdword(0x30);
#endif
q: ищу модуль по хэшу. взял из инета сниппеты find_module_by_hash и ror13_hash, но в некоторых случаях не находит kernel32.dll
a: во встречающихся в сети сниппетах может отсутствовать учёт регистра символов, при том что kernel32.dll может быть подгружен как "KERNEL32.DLL", то есть имя либы в верхнем регистре.
рабочий сниппет функции с багфиксом:
C:
DWORD __stdcall unicode_ror13_hash(const WCHAR *unicode_string)
{
DWORD hash = 0;
while (unicode_string != 0 && *unicode_string != 0)
{
DWORD val = (DWORD)*unicode_string++;
if (val >= 'A' && val <= 'Z') {
val |= 0x20;
}
hash = (hash >> 13) | (hash << 19);
hash += val;
}
return hash;
}
думаю по этим двум примерам формат понятен - без флуда и с конкретикой.
Последнее редактирование: