Solução de problemas com pwnable.kr 01 - fd. Descritores e processos de arquivo

imagem

Neste artigo, analisaremos: o que é um descritor de arquivo, como os processos acessam determinados fluxos de entrada / saída e resolvemos a primeira tarefa do site pwnable.kr .

Informações Organizacionais
Especialmente para aqueles que desejam aprender algo novo e se desenvolver em qualquer uma das áreas de segurança da informação e da informática, escreverei e falarei sobre as seguintes categorias:

  • PWN;
  • criptografia (criptografia);
  • tecnologias de rede (rede);
  • reverso (engenharia reversa);
  • esteganografia (estegano);
  • pesquisa e exploração de vulnerabilidades na WEB.

Além disso, compartilharei minha experiência em computação forense, análise de malware e firmware, ataques a redes sem fio e redes locais, realização de protestos e explorações por escrito.

Para que você possa descobrir sobre novos artigos, software e outras informações, criei um canal no Telegram e um grupo para discutir quaisquer questões no campo da CID. Além disso, considerarei pessoalmente seus pedidos, perguntas, sugestões e recomendações pessoais e responderei a todos .

Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não se responsabiliza por nenhum dano causado a alguém como resultado do uso dos conhecimentos e métodos obtidos como resultado do estudo deste documento.

Descritores de arquivo


Um descritor de arquivo é um número não negativo que identifica um fluxo de entrada / saída que pode estar associado a arquivos, diretórios ou soquetes.

imagem

A tabela de arquivos do sistema (SFT - Tabela de arquivos do sistema) e a tabela do inode (tabela INode) contêm as informações necessárias para o processo acessar os dados do arquivo. Se vários processos solicitarem acesso ao mesmo arquivo, cada um desses processos receberá seu próprio elemento da tabela de arquivos do sistema, apesar de trabalhar com o mesmo arquivo.

O kernel fornece o descritor de arquivo para o processo quando obtém acesso ao arquivo. Podemos dizer que um descritor de arquivo é um índice de uma matriz de arquivos abertos que é exclusiva para cada processo. Mas os três primeiros índices estão firmemente fixos:

  • 0 - entrada padrão (stdin);
  • 1 - saída padrão (stdout);
  • 2 - fluxo de erro padrão (stderr).

Portanto, as funções gets () e printf () da biblioteca padrão C usam stdin e stdout, o que permite que os shells redirecionem adequadamente a entrada e a saída dos processos.

Solução de trabalho Fd


Clicamos no primeiro ícone com a assinatura fd e informamos que precisamos conectar via SSH com a senha guest.

imagem

Quando conectado, vemos o banner correspondente.

imagem

Vamos descobrir quais arquivos estão no servidor e quais direitos temos.

ls -l 

imagem

Assim, podemos ler o código fonte do programa, pois existe o direito de ler para todos, e executar o programa fd com os direitos do proprietário (o bit fixo está definido). Vamos dar uma olhada no código fonte.

imagem

Segue-se do código que o programa pega um número como parâmetro, subtrai 0x1234 e o usa como descritor para obter uma string que deve ser igual a "LETMEWIN".

imagem

Portanto, precisamos enviar ao programa a string "LETMEWIN" através do fluxo de entrada padrão (stdin). Para isso, o descritor que é passado para a função read () deve ser 0. Ou seja, o número 0x1234 deve ser usado como o parâmetro do programa. Converta em decimal.

imagem

Agora execute o programa com o parâmetro 4660, solte a linha desejada e pegue a bandeira.

imagem

Como resultado, obtemos o primeiro ponto.

imagem

O Pwnable.kr começa com uma tarefa tão fácil, graças à qual foi necessário lidar com descritores. Vejo você nos seguintes artigos!

Estamos em um canal de telegrama: um canal no telegrama .

Source: https://habr.com/ru/post/pt458346/


All Articles