* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Esta técnica não será muito útil para XSS, mas pode ser útil para contornar proteções WAF. Este código Python recebe como entrada 2 bytes e procura por pares substitutos que tenham o primeiro byte como o último byte do par substituto alto e o último byte como o último byte do par substituto baixo.
A codificação Unicode pode ser usada para contornar filtros de XSS. Por exemplo, o caractere `>` pode ser codificado como `%u003e`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação Base64 pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o código JavaScript `alert('XSS')` pode ser codificado como `YWxlcnQoJ1hTUycp`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação UTF-8 pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o caractere `>` pode ser codificado como `%C0%BC`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação hexadecimal pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o caractere `>` pode ser codificado como `%3e`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação octal pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o caractere `>` pode ser codificado como `%76%6f%69%64`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação decimal pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o caractere `>` pode ser codificado como `>`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação de entidades HTML pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o caractere `>` pode ser codificado como `>`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação de URL pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o caractere `>` pode ser codificado como `%3e`. Isso pode ser usado para injetar código JavaScript em um URL.
A codificação de URL dupla pode ser usada para contornar filtros de XSS que bloqueiam caracteres especiais. Por exemplo, o caractere `>` pode ser codificado como `%253e`. Isso pode ser usado para injetar código JavaScript em um URL.
HTML Fuzzing é uma técnica usada para encontrar vulnerabilidades de XSS em páginas da web. Consiste em enviar uma grande quantidade de entradas inválidas ou malformadas para um aplicativo da web e observar como ele lida com elas. O objetivo é encontrar entradas que causem comportamentos inesperados ou explorem vulnerabilidades de XSS existentes. O HTML Fuzzing pode ser feito manualmente ou com ferramentas automatizadas.
A ferramenta **Hackability inspector** da Portswigger ajuda a **analisar** os **atributos** de um objeto javascript. Verifique: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
O operador de decremento `--` também é uma atribuição. Este operador pega um valor e depois o decrementa em um. Se esse valor não for um número, ele será definido como `NaN`. Isso pode ser usado para **remover o conteúdo de variáveis do ambiente**.
O método **`.call`** de uma função é usado para **executar a função**.\
O **primeiro argumento** que ele espera por padrão é o **valor de `this`** e se **nada** for fornecido, **`window`** será esse valor (a menos que seja usado o **`modo estrito`**).
// To pass more arguments, just pass then inside .call()
function test_call() {
console.log(arguments[0]); //"arg1"
console.log(arguments[1]); //"arg2"
console.log(this); //[object Window]
}
test_call.call(null, "arg1", "arg2")
// If you use the "use strict" directive "this" will be null instead of window:
function test_call() {
"use strict";
console.log(this); //null
}
test_call.call(null)
//The apply function is pretty much exactly the same as the call function with one important difference, you can supply an array of arguments in the second argument:
Então, a maioria das funções anteriores são na verdade inúteis porque não estamos salvando-as em nenhum lugar para salvá-las e chamá-las. Por exemplo, criando a função `plusone`:
\`\`\`javascript // Some ways to access window window.eval("alert(1)") frames globalThis parent self top //If inside a frame, this is top most window
// Access window from document document.defaultView.alert(1) // Access document from a node object node = document.createElement('div') node.ownerDocument.defaultView.alert(1)
// There is a path property on each error event whose last element is the window ![]() // In other browsers the method is ![]() // In case of svg, the "event" object is called "evt" 
// Abusing Error.prepareStackTrace to get Window back Error.prepareStackTrace=function(error, callSites){ 2 callSites.shift().getThis().alert(1337); 3 }; 4 new Error().stack
// From an HTML event // Events from HTML are executed in this context with(document) { with(element) { //executed event } } // Because of that with(document) it's possible to access properties of document like: ![]() \<img src onerror=s=createElement('script');s.append('alert(1337)');appendChild(s)>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).