Ciągi

https://chacker.pl/

Użyłeś już jednego obiektu typu string . Ciągi znaków są używane w Pythonie do przechowywania tekstu. Najlepszym sposobem pokazania, jak łatwo jest używać ciągów znaków i manipulować nimi, jest zademonstrowanie tej techniki, ponownie przy użyciu powłoki Pythona 3, w następujący sposób:

Oto podstawowe funkcje manipulacji ciągami, których będziesz używać podczas pracy z prostymi ciągami. Składnia jest prosta i przejrzysta, dokładnie taka, jakiej można się spodziewać po Pythonie. Jednym z ważnych rozróżnień, które należy od razu wprowadzić, jest to, że każdy z tych ciągów (nazwaliśmy je ciągiem1, ciągiem2 i ciągiem3) jest po prostu wskaźnikiem — dla osób zaznajomionych z C — lub etykietą bloku danych znajdującego się gdzieś w pamięci. Jedną z koncepcji, która czasami nasuwa się nowym programistom, jest koncepcja jednej etykiety (lub wskaźnika) wskazującej na inną etykietę. Poniższy kod i rysunekilustrują tę koncepcję:

>>> label1 = 'Dilbert’

>>> etykieta2 = etykieta1

W tym momencie mamy gdzieś w pamięci kawałek pamięci z zapisanym ciągiem Pythona „Dilbert”. Mamy też dwie etykiety wskazujące na tę plamę pamięci. Jeśli następnie zmienimy przypisanie etykiety1, etykieta2 nie ulegnie zmianie:

… continued from above

>>> label1 = 'Dogbert’

>>> label2

’Dilbert’

Jak widać na poniższym rysunku , etykieta2 sama w sobie nie wskazuje na etykietę1. Wskazuje raczej na to samo, na co wskazywała etykieta1, dopóki etykieta1 nie została ponownie przypisana.

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).