Neste artigo, resolveremos a 25ª tarefa no site
pwnable.kr .
Informações OrganizacionaisEspecialmente 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.

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

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

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

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

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.

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

É 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.

Agora execute o programa.

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')"

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 .