hacktricks/pentesting-web/xss-cross-site-scripting/debugging-client-side-js.md

59 lines
4 KiB
Markdown
Raw Normal View History

# Depurando JS do Lado do Cliente
## Depurando JS do Lado do Cliente
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
Depurar JS do lado do cliente pode ser complicado porque toda vez que você muda a URL (incluindo uma mudança nos parâmetros usados ou valores de parâmetros) você precisa **reiniciar o ponto de interrupção e recarregar a página**.
### `debugger;`
Se você colocar a linha `debugger;` dentro de um arquivo JS, quando o **navegador** executar o JS, ele irá **parar** o **debugger** naquele lugar. Portanto, uma maneira de definir pontos de interrupção constantes seria **baixar todos os arquivos localmente e definir pontos de interrupção no código JS**.
### Substituições
As substituições do navegador permitem ter uma cópia local do código que vai ser executado e executar essa em vez da do servidor remoto.\
Você pode **acessar as substituições** em "Dev Tools" --> "Sources" --> "Overrides".
Você precisa **criar uma pasta local vazia para ser usada para armazenar as substituições**, então apenas crie uma nova pasta local e defina-a como substituição nessa página.
Então, em "Dev Tools" --> "Sources" **selecione o arquivo** que você deseja substituir e com **clique direito selecione "Save for overrides"**.
![](<../../.gitbook/assets/image (742).png>)
Isso irá **copiar o arquivo JS localmente** e você poderá **modificar essa cópia no navegador**. Então, apenas adicione o comando **`debugger;`** onde você quiser, **salve** a alteração e **recarregue** a página, e toda vez que você acessar essa página da web **sua cópia local de JS será carregada** e seu comando de debugger mantido em seu lugar:
![](<../../.gitbook/assets/image (594).png>)
## Referências
* [https://www.youtube.com/watch?v=BW\_-RCo9lo8\&t=1529s](https://www.youtube.com/watch?v=BW\_-RCo9lo8\&t=1529s)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}