mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-21 08:28:27 +00:00
Translated ['pentesting-web/captcha-bypass.md', 'pentesting-web/client-s
This commit is contained in:
parent
6acff3bce0
commit
107ad2bcf3
3 changed files with 103 additions and 97 deletions
pentesting-web
reversing/reversing-tools-basic-methods
|
@ -1,4 +1,4 @@
|
|||
# Ominięcie Captcha
|
||||
# Bypass Captcha
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,51 +6,47 @@
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów GitHub.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
||||
## Ominięcie Captcha
|
||||
## Bypass Captcha
|
||||
|
||||
Aby **omijać** Captcha podczas **testowania serwera** i automatyzować funkcje wprowadzania użytkownika, można zastosować różne techniki. Celem nie jest osłabienie bezpieczeństwa, ale usprawnienie procesu testowania. Oto kompleksowa lista strategii:
|
||||
Aby **obejść** captchę podczas **testowania serwera** i zautomatyzować funkcje wprowadzania użytkownika, można zastosować różne techniki. Celem nie jest podważenie bezpieczeństwa, ale usprawnienie procesu testowania. Oto kompleksowa lista strategii:
|
||||
|
||||
1. **Manipulacja parametrami**:
|
||||
* **Pominięcie parametru Captcha**: Unikaj wysyłania parametru Captcha. Spróbuj zmienić metodę HTTP z POST na GET lub inne czasowniki oraz zmienić format danych, takie jak przełączanie między danymi formularza a JSON.
|
||||
* **Wysłanie pustego Captcha**: Prześlij żądanie z obecnym, ale pustym parametrem Captcha.
|
||||
1. **Manipulacja Parametrami**:
|
||||
* **Pominięcie Parametru Captcha**: Unikaj wysyłania parametru captchy. Eksperymentuj z zmianą metody HTTP z POST na GET lub inne czasowniki oraz zmieniaj format danych, takie jak przełączanie między danymi formularza a JSON.
|
||||
* **Wysłanie Pustej Captchy**: Prześlij żądanie z obecnym parametrem captchy, ale pozostaw go pusty.
|
||||
|
||||
2. **Ekstrakcja i ponowne wykorzystanie wartości**:
|
||||
* **Inspekcja kodu źródłowego**: Szukaj wartości Captcha w kodzie źródłowym strony.
|
||||
* **Analiza plików cookie**: Sprawdź pliki cookie, aby sprawdzić, czy wartość Captcha jest przechowywana i ponownie wykorzystywana.
|
||||
* **Ponowne wykorzystanie starych wartości Captcha**: Spróbuj ponownie użyć wcześniej udanych wartości Captcha.
|
||||
* **Manipulacja sesją**: Spróbuj użyć tej samej wartości Captcha w różnych sesjach lub tym samym identyfikatorze sesji.
|
||||
2. **Wydobycie i Ponowne Wykorzystanie Wartości**:
|
||||
* **Inspekcja Kodu Źródłowego**: Szukaj wartości captchy w kodzie źródłowym strony.
|
||||
* **Analiza Ciasteczek**: Sprawdź ciasteczka, aby sprawdzić, czy wartość captchy jest przechowywana i ponownie używana.
|
||||
* **Ponowne Wykorzystanie Starych Wartości Captchy**: Spróbuj ponownie użyć wcześniej udanych wartości captchy. Pamiętaj, że mogą one wygasnąć w dowolnym momencie.
|
||||
* **Manipulacja Sesją**: Spróbuj użyć tej samej wartości captchy w różnych sesjach lub tym samym identyfikatorze sesji.
|
||||
|
||||
3. **Automatyzacja i rozpoznawanie**:
|
||||
* **Captcha matematyczne**: Jeśli Captcha wymaga operacji matematycznych, zautomatyzuj proces obliczania.
|
||||
* **Rozpoznawanie obrazów**:
|
||||
* Dla Captcha, które wymagają odczytywania znaków z obrazu, ręcznie lub programowo określ całkowitą liczbę unikalnych obrazów. Jeśli zestaw jest ograniczony, możesz zidentyfikować każdy obraz za pomocą jego skrótu MD5.
|
||||
* Wykorzystaj narzędzia do optycznego rozpoznawania znaków (OCR), takie jak [Tesseract OCR](https://github.com/tesseract-ocr/tesseract), do automatycznego odczytywania znaków z obrazów.
|
||||
3. **Automatyzacja i Rozpoznawanie**:
|
||||
* **Captchy Matematyczne**: Jeśli captcha obejmuje operacje matematyczne, zautomatyzuj proces obliczeń.
|
||||
* **Rozpoznawanie Obrazów**:
|
||||
* Dla captchy, która wymaga odczytania znaków z obrazu, ręcznie lub programowo określ całkowitą liczbę unikalnych obrazów. Jeśli zestaw jest ograniczony, możesz zidentyfikować każdy obraz za pomocą jego skrótu MD5.
|
||||
* Wykorzystaj narzędzia do optycznego rozpoznawania znaków (OCR) takie jak [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) do automatycznego odczytywania znaków z obrazów.
|
||||
|
||||
4. **Dodatkowe techniki**:
|
||||
* **Testowanie limitu szybkości**: Sprawdź, czy aplikacja ogranicza liczbę prób lub zgłoszeń w określonym czasie i czy ten limit można ominąć lub zresetować.
|
||||
* **Usługi zewnętrzne**: Wykorzystaj usługi lub interfejsy API do rozwiązywania Captcha automatycznie.
|
||||
* **Rotacja sesji i adresów IP**: Często zmieniaj identyfikatory sesji i adresy IP, aby uniknąć wykrycia i blokowania przez serwer.
|
||||
* **Manipulacja User-Agent i nagłówkami**: Zmień User-Agent i inne nagłówki żądania, aby naśladować różne przeglądarki lub urządzenia.
|
||||
* **Analiza Captcha dźwiękowego**: Jeśli dostępna jest opcja Captcha dźwiękowego, użyj usług rozpoznawania mowy na tekst do interpretacji i rozwiązania Captcha.
|
||||
4. **Dodatkowe Techniki**:
|
||||
* **Testowanie Limitu Częstotliwości**: Sprawdź, czy aplikacja ogranicza liczbę prób lub zgłoszeń w określonym czasie i czy ten limit można ominąć lub zresetować.
|
||||
* **Usługi Zewnętrzne**: Skorzystaj z usług lub interfejsów API do rozwiązywania captchy, które oferują zautomatyzowane rozpoznawanie i rozwiązywanie captchy.
|
||||
* **Rotacja Sesji i Adresów IP**: Często zmieniaj identyfikatory sesji i adresy IP, aby uniknąć wykrycia i blokady przez serwer.
|
||||
* **Manipulacja User-Agent i Nagłówkami**: Zmień User-Agent i inne nagłówki żądania, aby naśladować różne przeglądarki lub urządzenia.
|
||||
* **Analiza Captchy Audio**: Jeśli dostępna jest opcja captchy audio, użyj usług rozpoznawania mowy do interpretacji i rozwiązania captchy.
|
||||
|
||||
|
||||
## Usługi online do ominięcia Captcha
|
||||
## Usługi Online do rozwiązywania captchy
|
||||
|
||||
### [Capsolver](https://www.capsolver.com/)
|
||||
|
||||
Automatyczne narzędzie do rozwiązywania Captcha Capsolver oferuje **najbardziej przystępną i szybką metodę rozwiązywania Captcha**. Możesz szybko zintegrować je ze swoim programem za pomocą prostej opcji integracji, aby osiągnąć najlepsze wyniki w kilka sekund.
|
||||
|
||||
Capsolver ma wskaźnik sukcesu wynoszący 99,15% i może **rozwiązywać ponad 10 milionów Captcha na minutę**. Oznacza to, że twoja automatyzacja lub skrapowanie będzie miało czas pracy wynoszący 99,99%. Jeśli masz duży budżet, możesz kupić pakiet Captcha.
|
||||
|
||||
Za najniższą cenę na rynku możesz otrzymać różne rozwiązania, w tym reCAPTCHA V2, reCAPTCHA V3, hCaptcha, hCaptcha Click, reCaptcha click, Funcaptcha Click, FunCaptcha, datadome captcha, aws captcha, picture-to-text, binance / coinmarketcap captcha, geetest v3 / v3 i wiele innych. Z tym serwisem **0,1 s to najwolniejsza prędkość, jaką kiedykolwiek zmierzono**.
|
||||
Automatyczny rozwiązywacz captchy Capsolver oferuje **przystępną i szybką rozwiązanie captchy**. Możesz szybko zintegrować go ze swoim programem za pomocą prostej opcji integracji, aby osiągnąć najlepsze wyniki w kilka sekund. Potrafi rozwiązywać reCAPTCHA V2 i V3, hCaptcha, FunCaptcha, datadome, captchę aws, obraz-do-tekstu, captchę binance / coinmarketcap, geetest v3 i wiele innych. Jednak nie jest to typowe obejście.
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -58,10 +54,10 @@ Za najniższą cenę na rynku możesz otrzymać różne rozwiązania, w tym reCA
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów GitHub.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Podsumowanie
|
||||
|
||||
To jest jak [**Server Side Template Injection**](ssti-server-side-template-injection/), ale po stronie **klienta**. **SSTI** pozwala na **wykonanie kodu** na zdalnym serwerze, a **CSTI** pozwala na **wykonanie dowolnego kodu JavaScript** na ofierze.
|
||||
To jest jak [**Wstrzyknięcie Szablonu Po Stronie Serwera**](ssti-server-side-template-injection/), ale po stronie **klienta**. **SSTI** może pozwolić Ci na **wykonanie kodu** na zdalnym serwerze, a **CSTI** może pozwolić Ci na **wykonanie dowolnego kodu JavaScript** w przeglądarce ofiary.
|
||||
|
||||
Sposób **testowania** tej podatności jest bardzo **podobny** do przypadku **SSTI**, interpreter oczekuje, że coś zostanie wykonane **między podwójnymi kluczami** i to zostanie wykonane. Na przykład, używając czegoś takiego jak: `{{ 7-7 }}`, jeśli serwer jest **podatny**, zobaczysz `0`, a jeśli nie, zobaczysz oryginalne: `{{ 7-7 }}`
|
||||
**Testowanie** tej podatności jest bardzo **podobne** jak w przypadku **SSTI**, interpreter oczekuje **szablonu** i go wykonuje. Na przykład, z ładunkiem jak `{{ 7-7 }}`, jeśli aplikacja jest **podatna**, zobaczysz `0`, a jeśli nie, zobaczysz oryginalny tekst: `{{ 7-7 }}`
|
||||
|
||||
# AngularJS
|
||||
|
||||
AngularJS to powszechnie używany framework JavaScript, który współdziała z HTML za pomocą atrybutów znanych jako dyrektywy, z czego jedną z nich jest **`ng-app`**. Ta dyrektywa pozwala AngularJS przetwarzać zawartość HTML, umożliwiając wykonywanie wyrażeń JavaScript wewnątrz podwójnych nawiasów klamrowych.
|
||||
AngularJS to powszechnie używany framework JavaScript, który współdziała z HTML za pomocą atrybutów znanych jako dyrektywy, znaną z nich jest dyrektywa **`ng-app`**. Ta dyrektywa pozwala AngularJS przetwarzać zawartość HTML, umożliwiając wykonywanie wyrażeń JavaScript wewnątrz podwójnych nawiasów klamrowych.
|
||||
|
||||
W przypadkach, gdy dane wprowadzane przez użytkownika są dynamicznie wstawiane do ciała HTML oznaczonego jako `ng-app`, możliwe jest wykonanie dowolnego kodu JavaScript. Można to osiągnąć, wykorzystując składnię AngularJS wewnątrz wprowadzanego tekstu. Poniżej znajdują się przykłady demonstrujące, jak można wykonać kod JavaScript:
|
||||
W sytuacjach, gdzie dane wprowadzane przez użytkownika są dynamicznie wstawiane do treści HTML oznaczonej jako `ng-app`, możliwe jest wykonanie dowolnego kodu JavaScript. Można to osiągnąć, wykorzystując składnię AngularJS wewnątrz wprowadzanego tekstu. Poniżej znajdują się przykłady demonstrujące, jak kod JavaScript może być wykonany:
|
||||
```javascript
|
||||
{{$on.constructor('alert(1)')()}}
|
||||
{{constructor.constructor('alert(1)')()}}
|
||||
|
@ -32,25 +32,25 @@ W przypadkach, gdy dane wprowadzane przez użytkownika są dynamicznie wstawiane
|
|||
<!-- Google Research - AngularJS -->
|
||||
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>
|
||||
```
|
||||
Możesz znaleźć bardzo **podstawowy przykład online** tej podatności w **AngularJS** na stronie [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) oraz w **[Burp Suite Academy](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)**
|
||||
Możesz znaleźć bardzo **podstawowy przykład online** tej podatności w **AngularJS** pod adresem [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) oraz na stronie **[Burp Suite Academy](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)**
|
||||
|
||||
{% hint style="danger" %}
|
||||
[**Angular 1.6 usunął sandbox**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html#:\~:text=The%20Angular%20expression%20sandbox%20will,smaller%20and%20easier%20to%20maintain.\&text=Removing%20the%20expression%20sandbox%20does,surface%20of%20Angular%201%20applications.) więc od tej wersji powinien działać payload taki jak `{{constructor.constructor('alert(1)')()}}` lub `<input ng-focus=$event.view.alert('XSS')>`.
|
||||
[**Angular 1.6 usunął piaskownicę**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html#:\~:text=The%20Angular%20expression%20sandbox%20will,smaller%20and%20easier%20to%20maintain.\&text=Removing%20the%20expression%20sandbox%20does,surface%20of%20Angular%201%20applications.) więc od tej wersji ładunek taki jak `{{constructor.constructor('alert(1)')()}}` lub `<input ng-focus=$event.view.alert('XSS')>` powinien działać.
|
||||
{% endhint %}
|
||||
|
||||
# VueJS
|
||||
|
||||
Możesz znaleźć **podatną implementację vue.js** pod adresem [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\
|
||||
Działający payload: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`](https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor\(%27alert\(%22foo%22\)%27\)\(\)%7D%7D)
|
||||
Możesz znaleźć **podatną implementację Vue** pod adresem [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\
|
||||
Działający ładunek: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`](https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor\(%27alert\(%22foo%22\)%27\)\(\)%7D%7D)
|
||||
|
||||
A **źródłowy kod** podatnego przykładu znajduje się tutaj: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example)
|
||||
A **kod źródłowy** przykładu podatności znajdziesz tutaj: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example)
|
||||
```markup
|
||||
<!-- Google Research - Vue.js-->
|
||||
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>
|
||||
```
|
||||
Naprawdę dobry post na temat CSTI w VUE można znaleźć pod adresem [https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets](https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets)
|
||||
|
||||
## **V3**
|
||||
|
||||
Bardzo dobry post na temat CSTI w VUE można znaleźć pod adresem [https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets](https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets)
|
||||
```
|
||||
{{_openBlock.constructor('alert(1)')()}}
|
||||
```
|
||||
|
@ -62,7 +62,7 @@ Kredyt: [Gareth Heyes, Lewis Ardern & PwnFunction](https://portswigger.net/resea
|
|||
```
|
||||
Kredyt: [Mario Heiderich](https://twitter.com/cure53berlin)
|
||||
|
||||
**Sprawdź więcej ładunków VUE na** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected)
|
||||
**Sprawdź więcej ładunków VUE w** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected)
|
||||
|
||||
# Mavo
|
||||
|
||||
|
@ -80,9 +80,9 @@ javascript:alert(1)%252f%252f..%252fcss-images
|
|||
<a href=[javascript&':alert(1)']>test</a>
|
||||
[self.alert(1)mod1]
|
||||
```
|
||||
**Więcej payloadów w** [**https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations**](https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations)
|
||||
**Więcej ładunków w** [**https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations**](https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations)
|
||||
|
||||
# **Lista wykrywania Brute-Force**
|
||||
# **Lista detekcji ataków Brute-Force**
|
||||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
|
||||
|
||||
|
@ -93,10 +93,10 @@ javascript:alert(1)%252f%252f..%252fcss-images
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repozytoriów GitHub.**
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# Narzędzia do Odwracania i Podstawowe Metody
|
||||
# Narzędzia do Reversingu i Podstawowe Metody
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Zacznij naukę hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
||||
## Narzędzia do Odwracania oparte na ImGui
|
||||
## Narzędzia do Reversingu oparte na ImGui
|
||||
|
||||
Oprogramowanie:
|
||||
|
||||
|
@ -33,17 +33,17 @@ Oprogramowanie:
|
|||
* [https://www.pnfsoftware.com/jeb/demo](https://www.pnfsoftware.com/jeb/demo)
|
||||
* [https://github.com/wwwg/wasmdec](https://github.com/wwwg/wasmdec)
|
||||
|
||||
## Dekompilator .Net
|
||||
## Dekompilator .NET
|
||||
|
||||
### [dotPeek](https://www.jetbrains.com/decompiler/)
|
||||
|
||||
dotPeek to dekompilator, który **dekompiluje i analizuje wiele formatów**, w tym **biblioteki** (.dll), pliki metadanych systemu Windows (.winmd) i **pliki wykonywalne** (.exe). Po dekompilacji, zestaw można zapisać jako projekt Visual Studio (.csproj).
|
||||
dotPeek to dekompilator, który **dekompiluje i analizuje wiele formatów**, w tym **biblioteki** (.dll), pliki metadanych systemu Windows (.winmd) i **pliki wykonywalne** (.exe). Po dekompilacji zestawu można zapisać jako projekt Visual Studio (.csproj).
|
||||
|
||||
Zaletą jest to, że jeśli utracony kod źródłowy wymaga przywrócenia z archiwalnego zestawu, ta czynność może zaoszczędzić czas. Ponadto dotPeek zapewnia wygodną nawigację po zdekompilowanym kodzie, co czyni go jednym z doskonałych narzędzi do analizy algorytmów Xamarin.
|
||||
|
||||
### [.Net Reflector](https://www.red-gate.com/products/reflector/)
|
||||
### [.NET Reflector](https://www.red-gate.com/products/reflector/)
|
||||
|
||||
Z kompleksowym modelem dodatków i interfejsem API rozszerzającym narzędzie, .NET Reflector oszczędza czas i upraszcza rozwój. Przejrzyjmy różnorodność usług inżynierii wstecznej, które oferuje to narzędzie:
|
||||
Dzięki kompleksowemu modelowi dodatków i interfejsowi API rozszerzającemu narzędzie, .NET Reflector oszczędza czas i upraszcza rozwój. Przejrzyjmy różnorodne usługi inżynierii wstecznej, jakie oferuje to narzędzie:
|
||||
|
||||
* Zapewnia wgląd w sposób przepływu danych przez bibliotekę lub komponent
|
||||
* Zapewnia wgląd w implementację i użycie języków i frameworków .NET
|
||||
|
@ -55,13 +55,12 @@ Z kompleksowym modelem dodatków i interfejsem API rozszerzającym narzędzie, .
|
|||
### [ILSpy](https://github.com/icsharpcode/ILSpy) & [dnSpy](https://github.com/dnSpy/dnSpy/releases)
|
||||
|
||||
[Wtyczka ILSpy dla Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): Możesz ją mieć w dowolnym systemie operacyjnym (możesz zainstalować ją bezpośrednio z VSCode, nie trzeba pobierać z git. Kliknij **Extensions** i **szukaj ILSpy**).\
|
||||
Jeśli musisz **dekompilować**, **modyfikować** i **ponownie kompilować**, możesz użyć: [**https://github.com/0xd4d/dnSpy/releases**](https://github.com/0xd4d/dnSpy/releases) (**Kliknij prawym przyciskiem -> Modify Method** aby zmienić coś wewnątrz funkcji).\
|
||||
Możesz także spróbować [https://www.jetbrains.com/es-es/decompiler/](https://www.jetbrains.com/es-es/decompiler/)
|
||||
Jeśli musisz **dekompilować**, **modyfikować** i **ponownie kompilować**, możesz użyć [**dnSpy**](https://github.com/dnSpy/dnSpy/releases) lub aktywnie utrzymywanego forka, [**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases). (**Kliknij prawym przyciskiem -> Modify Method** aby zmienić coś wewnątrz funkcji).
|
||||
|
||||
### Logowanie DNSpy
|
||||
|
||||
Aby sprawić, że **DNSpy zaloguje pewne informacje do pliku**, możesz użyć tych linii .Net:
|
||||
```bash
|
||||
Aby sprawić, że **DNSpy zaloguje pewne informacje do pliku**, możesz użyć tego fragmentu:
|
||||
```cs
|
||||
using System.IO;
|
||||
path = "C:\\inetpub\\temp\\MyTest2.txt";
|
||||
File.AppendAllText(path, "Password: " + password + "\n");
|
||||
|
@ -87,13 +86,13 @@ I kliknij **skompiluj**:
|
|||
|
||||
 (1) (1).png>)
|
||||
|
||||
Następnie zapisz nowy plik w _**Plik >> Zapisz moduł...**_:
|
||||
Następnie zapisz nowy plik za pomocą _**Plik >> Zapisz moduł...**_:
|
||||
|
||||
.png>)
|
||||
|
||||
Jest to konieczne, ponieważ jeśli tego nie zrobisz, podczas **uruchamiania** kodu zostanie zastosowanych kilka **optymalizacji**, co może spowodować, że podczas debugowania **punkt przerwania nie zostanie osiągnięty** lub niektóre **zmienne nie będą istniały**.
|
||||
Jest to konieczne, ponieważ jeśli tego nie zrobisz, podczas **uruchamiania** kodu zostanie zastosowanych kilka **optymalizacji** i może się zdarzyć, że podczas debugowania **punkt przerwania nie zostanie osiągnięty** lub niektóre **zmienne nie będą istnieć**.
|
||||
|
||||
Następnie, jeśli twoja aplikacja .Net jest **uruchamiana** przez **IIS**, możesz ją **ponownie uruchomić** za pomocą:
|
||||
Następnie, jeśli twoja aplikacja .NET jest **uruchamiana** przez **IIS**, możesz ją **ponownie uruchomić** za pomocą:
|
||||
```
|
||||
iisreset /noforce
|
||||
```
|
||||
|
@ -101,7 +100,7 @@ Następnie, aby rozpocząć debugowanie, należy zamknąć wszystkie otwarte pli
|
|||
|
||||
.png>)
|
||||
|
||||
Następnie wybierz **w3wp.exe**, aby dołączyć do serwera **IIS** i kliknij **attach**:
|
||||
Następnie wybierz **w3wp.exe**, aby dołączyć do serwera **IIS**, i kliknij **attach**:
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -115,7 +114,7 @@ Kliknij dowolny moduł w **Modules** i wybierz **Open All Modules**:
|
|||
|
||||
.png>)
|
||||
|
||||
Kliknij prawym przyciskiem myszy dowolny moduł w **Assembly Explorer** i wybierz **Sort Assemblies**:
|
||||
Kliknij prawym przyciskiem myszy dowolny moduł w **Assembly Explorer** i kliknij **Sort Assemblies**:
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -138,26 +137,26 @@ Kliknij prawym przyciskiem myszy dowolny moduł w **Assembly Explorer** i wybier
|
|||
|
||||
.png>)
|
||||
|
||||
Następnie, gdy rozpoczynasz debugowanie, **wykonanie zostanie zatrzymane po załadowaniu każdego DLL**, a gdy rundll32 załaduje twoje DLL, wykonanie zostanie zatrzymane.
|
||||
Następnie, gdy rozpoczniesz debugowanie, **wykonanie zostanie zatrzymane po załadowaniu każdego DLL**, a gdy rundll32 załaduje twoje DLL, wykonanie zostanie zatrzymane.
|
||||
|
||||
Ale jak uzyskać dostęp do kodu DLL, który został załadowany? Korzystając z tej metody, nie wiem jak.
|
||||
Ale jak uzyskać dostęp do kodu załadowanego DLL? Korzystając z tej metody, nie wiem jak.
|
||||
|
||||
### Korzystanie z x64dbg/x32dbg
|
||||
|
||||
* **Załaduj rundll32** (64 bity w C:\Windows\System32\rundll32.exe i 32 bity w C:\Windows\SysWOW64\rundll32.exe)
|
||||
* **Zmień linię poleceń** ( _File --> Change Command Line_ ) i ustaw ścieżkę do pliku DLL i funkcję, którą chcesz wywołać, na przykład: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain
|
||||
* Zmień _Options --> Settings_ i wybierz "**DLL Entry**".
|
||||
* Następnie **rozpocznij wykonanie**, debugger zatrzyma się przy każdym głównym elemencie DLL, w pewnym momencie zatrzymasz się w **wejściu DLL twojego DLL**. Następnie wyszukaj punkty, w których chcesz ustawić punkt przerwania.
|
||||
* Następnie **rozpocznij wykonanie**, debugger zatrzyma się przy każdym głównym elemencie DLL, w pewnym momencie zatrzymasz się w **wejściu DLL twojego DLL**. Następnie wyszukaj miejsca, w których chcesz ustawić punkt przerwania.
|
||||
|
||||
Zauważ, że gdy wykonanie zostanie zatrzymane z jakiegokolwiek powodu w win64dbg, możesz zobaczyć **w jakim kodzie się znajdujesz** patrząc na **górę okna win64dbg**:
|
||||
|
||||
.png>)
|
||||
|
||||
Następnie, patrząc na to, możesz zobaczyć, kiedy wykonanie zostało zatrzymane w DLL, którą chcesz debugować.
|
||||
Następnie, patrząc na to, możesz zobaczyć, kiedy wykonanie zostało zatrzymane w interesującym ci DLL.
|
||||
|
||||
## Aplikacje GUI / Gry wideo
|
||||
|
||||
[**Cheat Engine**](https://www.cheatengine.org/downloads.php) to przydatny program do znajdowania ważnych wartości zapisanych w pamięci działającej gry i ich zmiany. Więcej informacji w:
|
||||
[**Cheat Engine**](https://www.cheatengine.org/downloads.php) to przydatny program do znajdowania ważnych wartości zapisanych w pamięci działającej gry i ich zmiany. Więcej informacji znajdziesz w:
|
||||
|
||||
{% content-ref url="cheat-engine.md" %}
|
||||
[cheat-engine.md](cheat-engine.md)
|
||||
|
@ -171,10 +170,10 @@ Następnie, patrząc na to, możesz zobaczyć, kiedy wykonanie zostało zatrzyma
|
|||
|
||||
### Debugowanie shellkodu za pomocą blobrunner
|
||||
|
||||
[**Blobrunner**](https://github.com/OALabs/BlobRunner) **przydzieli** **shellkod** w przestrzeni pamięci, wskaże **adres pamięci**, w którym shellkod został przydzielony, a następnie **zatrzyma** wykonanie.\
|
||||
[**Blobrunner**](https://github.com/OALabs/BlobRunner) **przydzieli** **shellkod** w przestrzeni pamięci, wskaże **adres pamięci**, w którym został przydzielony shellkod, a następnie **zatrzyma** wykonanie.\
|
||||
Następnie musisz **dołączyć debugger** (Ida lub x64dbg) do procesu, ustawić **punkt przerwania na wskazanym adresie pamięci** i **wznowić** wykonanie. W ten sposób będziesz debugować shellkod.
|
||||
|
||||
Strona wydań na GitHubie zawiera spakowane wersje skompilowanych wydań: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
|
||||
Na stronie wydań na GitHubie znajdziesz skompilowane wersje: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
|
||||
Możesz znaleźć nieco zmodyfikowaną wersję Blobrunner pod następującym linkiem. Aby ją skompilować, wystarczy **utworzyć projekt C/C++ w Visual Studio Code, skopiować i wkleić kod oraz go skompilować**.
|
||||
|
||||
{% content-ref url="blobrunner.md" %}
|
||||
|
@ -183,7 +182,7 @@ Możesz znaleźć nieco zmodyfikowaną wersję Blobrunner pod następującym lin
|
|||
|
||||
### Debugowanie shellkodu za pomocą jmp2it
|
||||
|
||||
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)jest bardzo podobny do blobrunner. **Przydzieli** **shellkod** w przestrzeni pamięci i rozpocznie **wieczną pętlę**. Następnie musisz **dołączyć debugger** do procesu, **rozpocząć, poczekać 2-5 sekund i nacisnąć stop**, a znajdziesz się w **wiecznej pętli**. Przejdź do następnej instrukcji wiecznej pętli, ponieważ będzie to wywołanie do shellkodu, a ostatecznie będziesz wykonywać shellkod.
|
||||
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)jest bardzo podobny do blobrunner. **Przydzieli** **shellkod** w przestrzeni pamięci i rozpocznie **wieczną pętlę**. Następnie musisz **dołączyć debugger** do procesu, **rozpocząć, poczekać 2-5 sekund i nacisnąć stop**, a znajdziesz się w **wiecznej pętli**. Przejdź do następnej instrukcji wiecznej pętli, która będzie wywołaniem do shellkodu, i ostatecznie będziesz wykonywać shellkod.
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -207,9 +206,9 @@ Możesz zobaczyć stos na przykład w postaci zrzutu szesnastkowego:
|
|||
|
||||
.png>)
|
||||
|
||||
### Deobfuskacja shellkodu i uzyskiwanie wykonywanych funkcji
|
||||
### Odszyfrowywanie shellkodu i uzyskiwanie funkcji wykonywanych
|
||||
|
||||
Powinieneś spróbować [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152).\
|
||||
Spróbuj [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152).\
|
||||
Pokaże ci, które funkcje używa shellkod i czy shellkod **dekoduje** się w pamięci.
|
||||
```bash
|
||||
scdbg.exe -f shellcode # Get info
|
||||
|
@ -223,20 +222,20 @@ scDbg posiada również graficzny uruchamiacz, w którym możesz wybrać opcje,
|
|||
|
||||
.png>)
|
||||
|
||||
Opcja **Create Dump** spowoduje zrzucenie ostatecznego shellcode, jeśli jakakolwiek zmiana zostanie dokonana dynamicznie w pamięci shellcode (przydatne do pobrania zdekodowanego shellcode). **Start offset** może być przydatny do uruchomienia shellcode w określonym przesunięciu. Opcja **Debug Shell** jest przydatna do debugowania shellcode za pomocą terminala scDbg (jednak uważam, że któreś z opcji wyjaśnionych wcześniej są lepsze w tej kwestii, ponieważ będziesz mógł użyć Ida lub x64dbg).
|
||||
Opcja **Create Dump** spowoduje zrzucenie ostatecznego shellcode, jeśli jakakolwiek zmiana zostanie dokonana dynamicznie w pamięci (przydatne do pobrania zdekodowanego shellcode). **Start offset** może być przydatny do uruchomienia shellcode w określonym przesunięciu. Opcja **Debug Shell** jest przydatna do debugowania shellcode za pomocą terminala scDbg (jednak uważam, że każda z opcji wyjaśnionych wcześniej jest lepsza w tej kwestii, ponieważ będziesz mógł użyć Ida lub x64dbg).
|
||||
|
||||
### Rozkładanie na części za pomocą CyberChef
|
||||
### Rozkładanie za pomocą CyberChef
|
||||
|
||||
Prześlij plik ze swoim shellcodem jako dane wejściowe i użyj następującego przepisu, aby go zdekompilować: [https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\))
|
||||
|
||||
## [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator)
|
||||
|
||||
Ten obfuskator **modyfikuje wszystkie instrukcje na `mov`** (tak, naprawdę fajne). Wykorzystuje również przerwania do zmiany przepływów wykonań. Aby uzyskać więcej informacji na temat jego działania:
|
||||
Ten obfuskator **modyfikuje wszystkie instrukcje dla `mov`** (tak, naprawdę fajne). Wykorzystuje również przerwania do zmiany przepływów wykonania. Aby uzyskać więcej informacji na temat jego działania:
|
||||
|
||||
* [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF\_wPkiBJY)
|
||||
* [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf)
|
||||
|
||||
Jeśli masz szczęście, [demovfuscator ](https://github.com/kirschju/demovfuscator) zdeobfuskowuje binarny plik. Ma kilka zależności
|
||||
Jeśli masz szczęście, [demovfuscator](https://github.com/kirschju/demovfuscator) zdeobfuskuje binarny plik. Ma kilka zależności.
|
||||
```
|
||||
apt-get install libcapstone-dev
|
||||
apt-get install libz3-dev
|
||||
|
@ -251,18 +250,18 @@ Aby znaleźć **punkt wejścia**, wyszukaj funkcje za pomocą `::main` jak w:
|
|||
|
||||
.png>)
|
||||
|
||||
W tym przypadku plik binarny nosił nazwę authenticator, więc jest dość oczywiste, że to jest interesująca główna funkcja.\
|
||||
W tym przypadku plik binarny nosił nazwę authenticator, więc jest dość oczywiste, że ta funkcja main jest interesująca.\
|
||||
Mając **nazwę** **funkcji**, które są wywoływane, wyszukaj je w **Internecie**, aby dowiedzieć się o ich **wejściach** i **wyjściach**.
|
||||
|
||||
## **Delphi**
|
||||
|
||||
Dla skompilowanych binariów Delphi można użyć [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)
|
||||
Dla skompilowanych plików binarnych Delphi można użyć [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)
|
||||
|
||||
Jeśli musisz odwrócić binarny plik Delphi, sugeruję użycie wtyczki IDA [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
|
||||
|
||||
Wystarczy nacisnąć **ATL+f7** (zaimportuj wtyczkę python w IDA) i wybierz wtyczkę python.
|
||||
Wystarczy nacisnąć **ATL+f7** (importuj wtyczkę python w IDA) i wybierz wtyczkę python.
|
||||
|
||||
Ta wtyczka będzie wykonywać binarny plik i dynamicznie rozwiązywać nazwy funkcji na początku debugowania. Po rozpoczęciu debugowania ponownie naciśnij przycisk Start (zielony lub f9), a przerwa zostanie ustawiona na początku rzeczywistego kodu.
|
||||
Ta wtyczka będzie wykonywać binarny plik i dynamicznie rozwiązywać nazwy funkcji na początku debugowania. Po rozpoczęciu debugowania naciśnij ponownie przycisk Start (zielony lub f9), a przerwa zostanie przerwana na początku rzeczywistego kodu.
|
||||
|
||||
Jest to również bardzo interesujące, ponieważ jeśli naciśniesz przycisk w aplikacji graficznej, debugger zatrzyma się w funkcji wykonywanej przez ten przycisk.
|
||||
|
||||
|
@ -270,13 +269,13 @@ Jest to również bardzo interesujące, ponieważ jeśli naciśniesz przycisk w
|
|||
|
||||
Jeśli musisz odwrócić binarny plik Golang, sugeruję użycie wtyczki IDA [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
|
||||
|
||||
Wystarczy nacisnąć **ATL+f7** (zaimportuj wtyczkę python w IDA) i wybierz wtyczkę python.
|
||||
Wystarczy nacisnąć **ATL+f7** (importuj wtyczkę python w IDA) i wybierz wtyczkę python.
|
||||
|
||||
To rozwiąże nazwy funkcji.
|
||||
|
||||
## Skompilowany Python
|
||||
|
||||
Na tej stronie znajdziesz, jak uzyskać kod pythona z binarnego pliku ELF/EXE skompilowanego w pythonie:
|
||||
Na tej stronie znajdziesz, jak uzyskać kod pythona z binarnego pliku skompilowanego w formacie ELF/EXE:
|
||||
|
||||
{% content-ref url="../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
|
||||
[.pyc.md](../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
|
@ -291,11 +290,11 @@ Jeśli masz **binarny** plik gry GBA, możesz użyć różnych narzędzi do **em
|
|||
* [**gba-ghidra-loader**](https://github.com/pudii/gba-ghidra-loader) - Wtyczka Ghidra
|
||||
* [**GhidraGBA**](https://github.com/SiD3W4y/GhidraGBA) - Wtyczka Ghidra
|
||||
|
||||
W [**no$gba**](https://problemkaputt.de/gba.htm), w _**Opcje --> Konfiguracja Emulacji --> Kontrole**_\*\* \*\* możesz zobaczyć, jak nacisnąć przyciski Game Boy Advance
|
||||
W [**no$gba**](https://problemkaputt.de/gba.htm), w _**Opcje --> Konfiguracja Emulacji --> Kontrole**_\*\* \*\* możesz zobaczyć, jak nacisnąć przyciski Game Boy Advance **buttons**
|
||||
|
||||
.png>)
|
||||
|
||||
Naciśnięcie każdego przycisku ma wartość, aby go zidentyfikować:
|
||||
Naciśnięcie każdego przycisku ma wartość identyfikacyjną:
|
||||
```
|
||||
A = 1
|
||||
B = 2
|
||||
|
@ -308,7 +307,7 @@ DOWN = 128
|
|||
R = 256
|
||||
L = 256
|
||||
```
|
||||
Więc w tego rodzaju programach interesującą częścią będzie **sposób, w jaki program traktuje dane wejściowe użytkownika**. W adresie **0x4000130** znajdziesz często spotykaną funkcję: **KEYINPUT**.
|
||||
Więc w tego rodzaju programie interesującą częścią będzie **sposób, w jaki program traktuje dane wejściowe użytkownika**. W adresie **0x4000130** znajdziesz często spotykaną funkcję: **KEYINPUT**.
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -383,4 +382,15 @@ W poprzednim kodzie można zobaczyć, że porównujemy **uVar1** (miejsce, gdzie
|
|||
* W pozostałych przypadkach sprawdzane jest **cont** (`DAT_030000d4`). Jest to **cont**, ponieważ dodaje 1 zaraz po wpisaniu kodu.\
|
||||
Jeśli jest mniejszy niż 8, wykonywane są działania polegające na **dodawaniu** wartości do **`DAT_030000d8`** (w zasadzie dodawane są wartości naciśniętych klawiszy do tej zmiennej, dopóki cont jest mniejszy niż 8).
|
||||
|
||||
Tak więc w tym wyzwaniu, znając wartości przycisków, musisz **nacisnąć kombinację o długości mniejszej niż 8, aby wynikowe dodawanie było równe 0xf3.**
|
||||
W tym wyzwaniu, znając wartości przycisków, musisz **nacisnąć kombinację o długości mniejszej niż 8, aby wynikowe dodawanie było równe 0xf3.**
|
||||
|
||||
**Odniesienie do tego samouczka:** [**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/)
|
||||
|
||||
## Game Boy
|
||||
|
||||
{% embed url="https://www.youtube.com/watch?v=VVbRe7wr3G4" %}
|
||||
|
||||
## Kursy
|
||||
|
||||
* [https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering](https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering)
|
||||
* [https://github.com/malrev/ABD](https://github.com/malrev/ABD) (Deobfuskacja binarna)
|
||||
|
|
Loading…
Add table
Reference in a new issue