Никакого отношения к реальному шеллу не имеет, автор не понимает что шелл - последовательность гаджетов, а не просто блок релоцируемого кода(отвязанный от базы).
Вообще не обязательно, в первом же предложении автор дает вполне жизнеспособное определение, а разложен позиционно независимый код (или пейлоуд) в гаждеты, или нет, это уже дело десятое.
Rel, Реального шелла сборка сложна, любой пример еще еще взять. Это передача управления нарушающая связность(cfg/cfi/dfg), баян" дикий. Релоцируемый блок кода не нарушает ничего(минимальный баланс call-ret), более того отвязка от базы это расширение IA как адресация rip, в манах подробности. На 86 применялась релокация смещений.
Под определение шелла попадает не только баян по линкам (который если и будет работать, то только на тестмашине, и упадёт при первом-же портировании), но и всё остальное, что решает проблему. Реализация может быть какая угодно, т.к. жёсткие правила нигде не прописаны. Хочешь использовать ропгаджеты - никто не запрещает, только не нужно выдавать это за единственно возможный вариант, чтобы удовлетворить своё чсв. Я вовсе не утверждаю, что пример является супер-шеллом - это обычный примитив, который можно/нужно расширять. Главное, что он будет работать на всей линейке Win x64.
Зачем? Что за бред? Термин шеллкод буквально означал код, открывающий шелл (/bin/sh, например) на системе при эксплуатации уязвимости, какое нарушение связности?
Rel, Затем, что перезаписываются указатели, при переполнении например, кода нет готового в памяти. Marylin, Баян это rip-адресация. lea r,[rip+disp]. Работает на всей линейке x64.
Ну, во-первых, не любая, компиляторы Цэ/Плюсов то и дело любят пихнуть релок, с хода не знаю точно, для каких случаев это нужно, но вангую, что для таблиц виртуальных методов, или для jump-таблицы при оптимизации switch-ей, может, еще где-то. Во-вторых, шелл (помимо "отвязки" от базы) должен еще быть отвязан от загрузчика системы, то есть сам находить способ общения с системой, будь то поиск адресов API-функций на Венде через TEB/PEB, или вызов сисколов на Линуксах. Ты сам же в 2013 году на вирустеке находил уязвимость в Проводнике Венды, которая позволяла дернуть произвольный COM-объект по IUnknown-интерфейсу внутри Проводника, а следовательно и любой шелл, и которая совершенно не связанно с тобой оказалась в PowerLoader. Сколько буфферов в этой уязвимости переполнялось?
Так ведь сабж не про загрузчики; о чем там я до конца не понял. Вот это: Код (Text): shell: push rbp ;// выравним стек треда на 16-байт (общее правило для х64) call @f db 'cmd.exe /k whoami /priv',0 @@: pop rcx ;// RCX = адрес строки (первый аргумент WinExec) push 5 pop rdx ;// RDX = второй аргумент = SHOW_NORMAL sub rsp,20h call qword[WinExecAddr] - используется 64 rip-адресная кодировка к данным и при этом костыль 86 в виде call--data{}, вместо lea. Зачем ?
Я в общем-то оппонирую мнению о том, что любой шелл - цепочка гаджетов, которая дергается переполнением буффера, безотносительно тому, что автор делает call-pop для получения адреса строки, возможно, это - просто привычный для него паттерн из x86. Да и как бы в отношении шелла так ли это важно? Костыль там будет или нет?
Rel, Так и я про это, нет в сабже никаких гаджетов. Там элементарный пример отвязанного от базы кода, релоцируемого короче. Для ознакомления с ассемблером, автор просто не понимает адресацию, поэтому и влепил call-load + rip-fetch IA, Instruction Set Reference: RIP-Relative Addressing Загрузка кода из данных для малых стабов собирается вручную, для большого кода - загрузка из памяти. Тогда лодер настраивает образ из дампа. Но к шеллкодам никоим образом это не относится. Когда буфер разворачивается по гаджетам это шелл.
ну поставь туда lea, если она тебе так нравится - чё такой беспомощный-то? если сделаю это я, ты скажешь "почему не call/pop". в общем в треш этот топик, т.к. ничё путного из себя ты всё-равно не сможешь выдавить.
Marylin, Мне эта детская фигня не нужна. А посмотрел я потому, что ты назвал ее шеллкодом. Короче ссылки на codeby.net можно не читать, там сплошной треш. > удовлетворить своё чсв. > такой беспомощный-то? Откуда вы беретесь, д. малолетние
Ну конечно, ты же здесь один (убежавший в форточку из псих) наполеон. Все твои посты от имени пациента, которому даже интенсивное лечение уже не поможет. Не понимаю, как можно нести такой бред, а затем учить ещё кого-то жизни? Это-же реально записки сумашедшего. Хотя после ядерной зимы и мы наверное так мутируем, но ты нас всех намного опередил. Ещё чёто пукаешь там..