# Assistindo Cachorros

> Você foi recrutado como o mais novo membro do DedSec. Eles te passaram o site da organização, porém não te contaram como acessar. Agora você terá que usar das pistas para conseguir o acesso.
>
> _"Duas cabeças pensam melhor que uma, mas a outra tem que ter o seu próprio cérebro!"_

* **Autor:** [@jackskelt](https://github.com/jackskelt)
* _O desafio foi inspirado no desafio_ [_Who Are You?_](https://play.picoctf.org/practice/challenge/142) _do_ [_PicoCTF_](https://picoctf.org/)

Ao entrar no site, somos recebidos com uma tela dizendo "Acesso Negado: Invasor Detectado" e a descrição "Somente agentes que utilizam o navegador próprio DedSecBrowser são permitidos."

<details>

<summary>Dica na Descrição</summary>

Analisando a descrição do desafio, temos a frase "Duas cabeças pensam melhor que uma, mas a outra tem que ter o seu próprio cérebro!". Isso dá a dica de que temos que utilizar os [headers](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers) (_head_, do inglês, cabeça) para resolver o desafio.

</details>

![Site do desafio.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-613ca3cf4a4592e492a9e2124fddf7dabf8c19be%2Fsite1.png?alt=media)

O site consegue saber o navegador que estamos utilizando pelo header [`User-Agent`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/User-Agent), que é enviado em todas as requisições HTTP. Então podemos modificar esse header para `DeadSecBrowser`.

```bash
curl -H "User-Agent: DeadSecBrowser" URL
```

![Eu não confio em pessoas que não vieram pelo dedsec.network.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-2d66f77439233f21858542b733a7a74e68371c32%2Fsite2.png?alt=media)

Assim agora temos outra mensagem: "Eu não confio em pessoas que não vieram pelo dedsec.network". O site agora está pedindo para que utilizemos o [`Referer`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/Referer) (referência) para conseguir acessar o site. O header [`Referer`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/Referer) é utilizado para informar de onde o usuário veio, ou seja, qual página ele estava antes de acessar a página atual. Então vamos adicionar esse header também.

```bash
curl -H "User-Agent: DeadSecBrowser" \
    -H "Referer: dedsec.network" URL
```

![Você pode estar sendo rastreado. Quem pode estar sendo rastreado não é bem-vindo aqui.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-0418fa44ef58c76f04ccf63189dce1c255494ec4%2Fsite3.png?alt=media)

Obtemos mais uma mensagem: "Você pode estar sendo rastreado. Quem pode estar sendo rastreado não é bem-vindo aqui.". Agora o site está pedindo para que utilizemos o [`DNT`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/DNT) (Do Not Track). O header [`DNT`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/DNT) é utilizado para informar se o usuário deseja ou não ser rastreado. Então vamos adicionar esse header também.

```bash
curl -H "User-Agent: DeadSecBrowser" \
    -H "Referer: dedsec.network" \
    -H "DNT: 1" URL
```

![Apenas agentes conectados na rede local podem acessar o site. Você não é um deles.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-a0b27021d430fd7f95a559c55d0ad14c93c51274%2Fsite4.png?alt=media)

A mensagem agora é: "Apenas agentes conectados na rede local podem acessar o site. Você não é um deles.". Agora o site está pedindo para que utilizemos o [`X-Forwarded-For`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/X-Forwarded-For). O header [`X-Forwarded-For`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/X-Forwarded-For) é utilizado para informar o endereço IP do cliente que está fazendo a requisição. Então vamos adicionar esse header como `127.0.0.1` ou `localhost`.

```bash
curl -H "User-Agent: DeadSecBrowser" \
    -H "Referer: dedsec.network" \
    -H "DNT: 1" \
    -H "X-Forwarded-For: 127.0.0.1" URL
```

![Você precisa fornecer o código secreto correto para acessar o site. Somente os verdadeiros agentes DedSec têm acesso a esse código.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-bde5a5c63d4ae888f796767fd2181ed52f6e8bfd%2Fsite5.png?alt=media)

O site está pedindo um código secreto. Analisando o código fonte do site, achamos um comentário com o texto `<!-- Header Secret-Code: AidenPearce -->`. Esse é o código secreto que precisamos fornecer para acessar o site. Vamos adicionar esse header também.

```bash
curl -H "User-Agent: DeadSecBrowser" \
    -H "Referer: dedsec.network" \
    -H "DNT: 1" \
    -H "X-Forwarded-For: 127.0.0.1" \
    -H "Secret-Code: AidenPearce" URL
```

![Comentário escondido no código fonte da página.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-7077e70790960739d849b3cf4298222e4fd24a20%2Fsite6.png?alt=media)

![Você conseguiu ultrapassar o firewall e demonstrou que é um agente DedSec verídico. Sua flag foi entregue.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-953749cb26d63b796bcb372c1d1460ba523c5c6f%2Fsite7.png?alt=media)

O site diz que a flag foi entregue, porém ela não está visível. Analisando os headers da resposta, vemos que o header `Flag` foi adicionado com o valor `hawk{c0m0_c4ch0rr0s_3_g4t0s}`.

![Flag do desafio nos headers da resposta.](https://718149622-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcBi7Uo2gNWVj8k2Y52v4%2Fuploads%2Fgit-blob-be8d25cad045b33729cf5aa513cb0a668da8d5e0%2Fflag.png?alt=media)

```bash
Flag: hawk{c0m0_c4ch0rr0s_3_g4t0s}
```
