Enunciado do Level 1
The password for the next level is stored in a file called - located in the home directory.
O arquivo se chama - e já sabemos que está no diretório home, agora nos resta entender como ser esse arquivo. No material de referências há informações sobre dashed filename e o objetivo é entendermos como podemos realizar o escape desse caracter, já que o bash ou o kernel não o interpretam como um caracter especial. Na maioria dos comandos, ele simbola que você está passando um argumento, como -flag ou -ip, então quando você tentar ser esse arquivo se uma forma simples como cat -, ele vai interpretar que você estava inserindo o inicio de alguma argumento especial do cat ou de qualquer outro comando.
Bandit1 - Solução 1
Podemos utilizar o cat para ler o arquivo, porém ele interpreta a leitura de um dashed filename de um jeito diferente. O cat enxerga o caractere - como uma string e ele a trata como um sinônimo de stdin. A unica forma de contornar isso é alterar como o cat vê a string - de uma forma que ainda se refira a um arquivo chamado -. A maneira usual de fazer isso é prefixar o nome do arquivo com um caminho ./- ou utilizando o caminho absoluto /home/nym/-. Essa é uma técnica também utilizada para contornar problemas semelhantes em que as opções de linha de comando entram em conflito com nomes de arquivos, em exemplo ./-e não aparece como a opção de linha de comando -e para um programa.
$ cat ./-
Bandit1 - Solução 2
Ainda utilizando o cat, outra maneira é utilizando o operador de redirecionamento < e injetar o arquivo no comando cat.
$ cat < -