Obiekty Pythona

https://chacker.pl/

Najważniejsze rzeczy, które musisz dobrze zrozumieć, to różne typy obiektów, których Python może używać do przechowywania danych i sposób, w jaki manipuluje tymi danymi. Omówimy pięć największych typów danych: ciągi znaków, liczby, listy, słowniki i pliki. Następnie omówimy podstawową składnię i absolutne minimum, które musisz wiedzieć o Pythonie i sieci.

Zdobycie Pythona

https://chacker.pl/

Pominiemy zwykłe diagramy architektury i gadkę o celach projektowych i powiemy Ci, abyś po prostu pobrał wersję Pythona dla swojego systemu operacyjnego ze strony www.python.org/download/, abyś mógł śledzić dalej. Alternatywnie, spróbuj po prostu uruchomić go, wpisując python w wierszu poleceń — jest on instalowany domyślnie w wielu dystrybucjach Linuksa oraz w systemie Mac OS X 10.3 i nowszych. Ponieważ język Python jest interpretowany (a nie kompilowany), możesz uzyskać natychmiastową informację zwrotną od Pythona, korzystając z jego interaktywnego monitu. Będziemy go używać na kilku następnych stronach, więc powinieneś już teraz uruchomić interaktywny monit, wpisując python.

Umiejętności przetrwania w Pythonie

https://chacker.pl/

Python to popularny interpretowany, obiektowy język programowania. Narzędzia hakerskie (i wiele innych aplikacji) korzystają z języka Python, ponieważ łatwo się go nauczyć i używać, jest dość potężny i ma przejrzystą składnię, która ułatwia czytanie. To wprowadzenie obejmuje jedynie absolutne minimum, które musisz zrozumieć. Prawie na pewno będziesz chciał dowiedzieć się więcej, dlatego możesz zapoznać się z jedną z wielu dobrych książek poświęconych Pythonowi lub obszerną dokumentacją na stronie www.python.org. Python 2.7 został wycofany 1 stycznia 2020 roku. Wielu praktyków nadal lubi wersję 2.7 i przez lata powtarzało, że jeśli chcesz nauczyć się języka Python, aby móc używać, modyfikować lub rozszerzać istniejące projekty Pythona, powinieneś najpierw nauczyć się Pythona 2.7 . Jednakże w tej chwili, jeśli Twoim celem jest rozpoczęcie pracy nad rozwojem nowego języka Python, powinieneś skupić się na Pythonie 3, ponieważ usuwa on wiele problemów w Pythonie 2.7. Nadal istnieje niezliczona ilość programów zależnych od Pythona 2.6 lub Pythona 2.7, więc bądź świadomy, jakiej wersji używasz.

Dezasemblacja za pomocą gdb

https://chacker.pl/

Aby przeprowadzić dezasemblację za pomocą gdb, potrzebujesz dwóch następujących poleceń:

set disassembly-flavor <intel/att>

disassemble <function name>

Pierwsze polecenie przełącza pomiędzy formatem Intel (NASM) i AT&T. Domyślnie gdb używa formatu AT&T. Drugie polecenie deasembluje daną funkcję (w tym funkcję main, jeśli została podana). Na przykład, aby zdemontować funkcję o nazwie powitanie w obu formatach, wpisz:

Oto kilka częściej używanych poleceń:

info functions

disassemble /r <function name>

Polecenie info funkcje pokazuje wszystkie dynamicznie połączone funkcje, a także wszystkie funkcje wewnętrzne, chyba że program został usunięty. Użycie funkcji disassemble z opcją /r <nazwa funkcji> powoduje zrzucenie kodów operacji i operandów, a także instrukcji. Kody operacji to zasadniczo reprezentacje kodu maszynowego wstępnie zmontowanego kodu asemblera.

Podstawy gdb

https://chacker.pl/

Często używane polecenia w gdb są wymienione i opisane w tabeli poniżej

Teraz wydajemy następujące polecenia. Pierwsze polecenie przekompiluje nasz program Meet z symbolami debugowania i innymi przydatnymi opcjami

 

Debugowanie

Aby zdebugować nasz przykładowy program, najpierw zainstaluj gdb w swojej instancji Kali:

Teraz wydajemy następujące polecenia. Pierwsze polecenie przekompiluje nasz program Meet z symbolami debugowania i innymi przydatnymi opcjami

Debugowanie za pomocą gdb

https://chacker.pl/

Debugerem wybieranym do programowania w C w systemach Unix jest gdb. Zapewnia solidny interfejs wiersza poleceń, pozwalający na uruchomienie programu przy zachowaniu pełnej kontroli. Na przykład możesz ustawić punkty przerwania w wykonywaniu programu i monitorować zawartość pamięci lub rejestrów w dowolnym momencie. Z tego powodu debugery takie jak gdb są nieocenione zarówno dla programistów, jak i hakerów. Dla tych, którzy szukają bardziej graficznego debugowania w systemie Linux, dostępne są alternatywy lub rozszerzenia, takie jak ddd i edb.

Struktura pliku asemblacji

https://chacker.pl/

Plik źródłowy asmeblerowy jest podzielony na następujące sekcje:

  • .model Dyrektywa .model wskazuje rozmiar plików sekcji .data i .text .
  • .stack Dyrektywa .stack wyznacza początek sekcji stosu i wskazuje rozmiar stosu w bajtach.
  • .data Dyrektywa .data wyznacza początek sekcji .data i definiuje zmienne, zarówno zainicjowane, jak i niezainicjowane.
  • ..text. dyrektywa .text przechowuje polecenia programu

Tryby adresowania

https://chacker.pl/

W asemblerze można zastosować kilka metod, aby osiągnąć ten sam cel. W szczególności istnieje wiele sposobów wskazania efektywnego adresu, którym można manipulować w pamięci. Opcje te nazywane są trybami adresowania i są podsumowane w tabeli. Pamiętaj, że rejestry zaczynające się od „e” mają 32 bity (4 bajty), a te z literą „r” mają 64 bity (8 bajtów).

Wywołania systemowe: int, sysenter i syscall

https://chacker.pl/

Wywołania systemowe to mechanizm umożliwiający procesowi żądanie wykonania uprzywilejowanej operacji, gdy kontekst i wykonanie kodu zostaną przełączone z trybu użytkownika do trybu jądra. Starsza instrukcja x86 służąca do wywołania wywołania systemowego to int 0x80. Jest to uważane za przestarzałe, ale nadal jest obsługiwane w 32-bitowych systemach operacyjnych. Instrukcja sysenter jest jej następcą dla aplikacji 32-bitowych. W przypadku 64-bitowych systemów operacyjnych i aplikacji opartych na systemie Linux wymagana jest instrukcja syscall. Podczas pisania kodu powłoki i innych wyspecjalizowanych programów lub ładunków należy dobrze rozumieć różne metody wywoływania wywołań systemowych i ustawiania odpowiednich argumentów.