Articles

0: base knowledge

Posted on

Exploit Development jest trudny, nauka Jak to zrobić będzie wymagała dużo nauki, praktyki i dobrego zrozumienia dość szerokiego zakresu powiązanych tematów. Dobrą wiadomością jest to, że nie musisz uczyć się wszystkiego na raz lub z dnia na dzień, i że jest wiele osób, które zrobiły lub są w tej samej bolesnej podróży-niektórzy z nich piszą blogi, takie jak corelan security lub fuzzy security.

ogólnie zalecanym podejściem dla początkujących jest rozpoczęcie od początku, prostego przepełnienia bufora opartego na stosie pod koniec lat 90-tych, spopularyzowanego przez Aleph One „Smashing the stack for fun and profit”, a następnie stopniowe prace nad wprowadzaniem i pokonywaniem coraz bardziej nowoczesnych rozwiązań łagodzących, nowych wektorów eksploatacji i architektur. Kiedy to robisz i ćwiczysz przeciwko wyzyskom w świecie rzeczywistym, zaczynasz pobierać część dodatkowej wiedzy z własnych badań i nie zapomnij robić notatek, może się okazać, że pomaga Ci prowadzenie bloga lub publikowanie solucji z Twoich wyczynów tutaj

dokładnie to, na jakim poziomie umiejętności musisz być, zanim zaczniesz uczyć się o wykorzystywaniu binarnym, zawsze będzie czymś, co powoduje obawy niektórych ludzi. Jesteś już gotowy? Odpowiedź brzmi ogólnie tak i nie, od dzisiaj i od porażki uczysz się więcej niż jakakolwiek ilość zwlekania, ale jednocześnie za każdym razem, gdy uczysz się czegoś nowego, odkrywasz dwie rzeczy, których nie rozumiesz. Hakowanie jest dla tego straszne, im więcej się uczę, tym bardziej czuję się jak kompletny nowicjusz. Jedyną rzeczą, aby to spróbować; najgorszy przypadek jest to, że odkrywasz, że musisz nauczyć się kilku innych rzeczy, a nigdy nie zaszkodzi przeczytać książkę.

zasoby:

wiele książek

Polecane tematy:

zrozumienie C / C++

pojęcia pamięci i procesora, takie jak adresowanie pamięci, rejestry i stosy

język skryptowy, taki jak Python, Perl, Ruby lub Bash

płynność w wybranym systemie operacyjnym i przynajmniej podstawowe zrozumienie używanego debugera

kwestia platform, których można używać jako ofiar, jest najczęściej osobisty wybór, niektórzy ludzie lubią najpierw uczyć się eksploatacji systemu Windows, a następnie przejść na Linuksa, podczas gdy niektórzy (jak ja) wolą zacząć od eksploatacji systemu Linux przed przejściem do systemu Windows. Moim zdaniem jest więcej i lepszych zasobów do nauki podstaw Linuksa, ale wybór naprawdę należy do ciebie.

zasoby:

rozbijanie stosu dla zabawy i zysku

Exploit Exercises Protostar: Stack levels 0-5

niektóre z pojęć związanych z nauką tego rodzaju prostego wykorzystywania będą dość obce początkującym, ale po pewnym czasie spędzonym z debuggerem powinieneś zacząć rozumieć niektóre rzeczy, które będziesz potrzebować, aby przeczytać o nich.

2: formatowanie luk w łańcuchu

:

Wprowadzenie do formatowania exploitów łańcuchowych

exploity ćwiczenia Protostar: formatowanie poziomów 0-4

formatowanie exploitów łańcuchowych są dobrym kolejnym krokiem po prostych przepełnieniach bufora, ponieważ mają wiele podobieństw, ale także dają możliwość zabawy z dowolnymi manipulacjami pamięcią. Formatowanie ciągów pokazuje również niektóre z dziwactw, które mogą skutkować sytuacjami, w których można wykorzystać

3: Powrót do libc-pokonując Nie wykonywalne stosy (aka DEP, w^X, NX)

zasoby:

(Exploit Exercises Protostar: Poziom stosu 6](https://exploit.education/protostar/stack-six/)

ret2libc jest pierwszym prostym ominięciem łagodzenia exploita i służy jako wprowadzenie do pojęć, które stanowią podstawę potężnej techniki programowania zorientowanego na powrót, istnieje kilka wariantów tej techniki, takich jak ret2plt lub ret2text

4: programowanie zorientowane na powrót (ROP)

zasoby:

Exploit Exercises Protostar: Stack level 7

/u/d4mianwayne 's ROP Introduction

ROP jest kluczową techniką dla współczesnego wykorzystania, która może być użyta do pokonania zarówno DEP, jak i ASLR, a także ciekawym sposobem na poznanie asemblera i naprawdę dogłębne zapoznanie się z syscalls, rejestrami i innymi podstawami niskiego poziomu.

5: pokonanie kanarków stosu

kanarki stosu są ograniczeniem exploitów, które ma na celu zapobieganie exploitom poprzez dodanie małego sprawdzenia na końcu funkcji przepełnienia bufora. Występują w różnych kształtach i stylach, takich jak terminator canaries i random canaries. Nauczenie się kilku technik, aby je pokonać lub ominąć, jest dość niezbędne.

zasoby:

uwagi Corelana na ten temat

Uwaga: zasoby na ten temat wydają się ograniczone – wszelkie sugestie lub posty na ten temat mile widziane

6: podstawy eksploatacji sterty

bardziej nowoczesna eksploatacja koncentruje się wokół sterty, a nie stosu, częściowo ze względu na poprawę stanu łagodzenia exploitów opartych na stosie, częściowo dlatego, że standardy kodowania uległy poprawie i istnieją mniej możliwości prostego rozbijania stosu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.