Exploit Development är svårt, att lära sig att göra det kommer att kräva mycket studier, övning och god förståelse för ett ganska brett spektrum av associerade ämnen. Den goda nyheten är att du inte behöver lära dig allt på en gång eller över natten, och att det finns många människor som har gjort eller är på samma smärtsamma resa – av vilka några skriver Bloggar som corelan security eller fuzzy security.
det allmänt rekommenderade tillvägagångssättet för en nybörjare är att börja i början, i slutet av 90-talets stil enkla stackbaserade buffertspill populariserade av Aleph ones ”Smashing the stack for fun and profit”, och sedan gradvis arbeta med att introducera och besegra progressivt mer moderna mildringar, nya exploateringsvektorer och arkitekturer. När du gör detta och öva mot verkliga världen utnyttjar du börjar plocka upp några av de tillhörande kunskap från din egen forskning, och glöm inte att göra anteckningar, du kanske tycker att det hjälper till att hålla en blogg, eller post genomgångar av dina bedrifter här
exakt vilken kompetensnivå du behöver vara på innan du börjar lära sig om binär exploatering kommer alltid att vara något som orsakar vissa människor oro. Är du redo än? Svaret är i allmänhet ja och nej, du lär dig mer genom att börja idag och misslyckas än någon mängd förhalning, men samtidigt varje gång du lär dig något nytt upptäcker du två saker som du inte förstår. Hacking är hemskt för detta, ju mer Jag lär mig desto mer känner jag mig som en komplett nybörjare. Det enda för det är att försöka; det värsta fallet är att du upptäcker att du behöver lära dig några andra saker först, och det gör aldrig ont att läsa en bok.
resurser:
en mängd olika böcker
rekommenderade ämnen:
en förståelse för C / C++
minnes-och CPU-begrepp som minnesadressering, register och stackar
ett skriptspråk som Python, Perl, Ruby eller Bash
flyt i ditt valda operativsystem och åtminstone en grundläggande förståelse för vilken debugger du använder
frågan om plattformar som ska användas som dina offer är mestadels ett personligt val, vissa människor gillar att lära sig windows-exploatering först och sedan flytta till Linux, medan vissa (som jag själv) föredrar att börja med Linux-exploatering innan de flyttar till Windows. Enligt min mening finns det fler och bättre resurser för att lära sig grunderna på Linux men valet är verkligen ditt.
resurser:
krossa stacken för skojs skull och vinst
utnyttja övningar Protostar: Stack nivåer 0-5
några av de begrepp som är inblandade i att lära sig att göra denna typ av enkel exploatering kommer att vara ganska främmande för en nybörjare, men med lite tid händerna på med en debugger bör du börja få en förståelse för några av de saker du kommer att behöva läsa upp om
2: formatera sträng sårbarheter
resurser:
introduktion till format String Exploits
Exploit Exercises Protostar: Formatnivåer 0-4
Format string exploits är ett bra nästa steg efter enkla buffertspill eftersom de delar många likheter, men ger dig också möjlighet att leka med godtyckliga minnesmanipulationer. Formatsträngar visar också en del av weirdness som kan resultera i exploaterbara situationer
3: återgå till LibC-besegra icke-körbara stackar (aka DEP, W^X, NX)
resurser:
(utnyttja övningar Protostar: Stack nivå 6](https://exploit.education/protostar/stack-six/)
ret2libc är den första enkla förbikopplingen av en exploit mitigation och fungerar som en introduktion till de begrepp som ligger till grund för den kraftfulla returorienterade programmeringstekniken, det finns ett par varianter av denna teknik som ret2plt eller ret2text
4: Returorienterad programmering (ROP)
resurser:
Exploit övningar Protostar: Stack level 7
/ u / d4mianwayne ’s rop introduktion
ROP är en viktig teknik för modern exploatering som kan användas för att besegra DEP samt ASLR, och ett intressant sätt att lära sig om assembler och verkligen börja få på djupet med syscalls, register och andra låg nivå fundamenta.
5: besegra stack kanariefåglar
Stack kanariefåglar är en exploit begränsning som syftar till att förhindra bedrifter genom att lägga till en liten kontroll till slutet av funktioner för buffertspill. De finns i en mängd olika former och stilar, såsom terminator kanariefåglar och slumpmässiga kanariefåglar. Att lära sig några tekniker för att besegra eller kringgå dem är ganska viktigt.
resurser:
Corelans anteckningar om detta
notera: resurser för detta verkar begränsade – några förslag eller inlägg om ämnet välkomna
6: Heap Exploitation Basics
mer modern exploatering fokuserar kring högen snarare än stacken, delvis på grund av det förbättrade tillståndet för mitigationer för stackbaserade exploater, delvis för att kodningsstandarder har förbättrats och det finns färre möjligheter för enkel stack smashing.