Solução de problemas com pwnable.kr 25 - otp. Limite de tamanho de arquivo do Linux

imagem

Neste artigo, resolveremos a 25ª tarefa no 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 análise forense de computadores, 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.

Solução de trabalho Otp


Continuamos a segunda seção. Eu direi imediatamente que é mais difícil que o primeiro, mas desta vez eles nos fornecem o código fonte do programa. Não se esqueça da discussão aqui (https://t.me/RalfHackerPublicChat) e aqui (https://t.me/RalfHackerChannel). Vamos começar.

Clique no ícone com a assinatura otp. Nos é dado o endereço e a porta para conexão.

imagem

Nós nos conectamos e olhamos em volta no servidor.

imagem

Uma bandeira que não podemos ler, um programa e seu código fonte. Vamos ver a fonte.

imagem

Vamos analisar isso. O programa usa uma senha como argumento.

imagem

Em seguida, 16 bytes aleatórios são armazenados na variável otp.

imagem

Um arquivo com um nome aleatório (os primeiros 8 bytes de otp) é criado na pasta tmp e 8 bytes aleatórios (os segundos 8 bytes de otp) são gravados nele.

imagem

Por alguma razão, o arquivo criado lê o valor e o compara com a senha inserida.

imagem

É aqui que está a vulnerabilidade. Consiste no armazenamento intermediário do número gerado em um arquivo. Podemos limitar o tamanho do arquivo, por exemplo, a 0, quando compararmos a escrita e a leitura com a senha 0. Isso pode ser feito assim.

# ulimit -f 0 

imagem

Agora execute o programa.

imagem

Temos um erro. Não importa, porque pode ser processado usando o mesmo python.

 python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" 

imagem

Recebemos a bandeira e nossos pulmões 100 pontos. E continuamos: no próximo artigo, tocaremos na Web. Você pode se juntar a nós no Telegram .

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


All Articles