Neste artigo resolveremos a 25ª tarefa do site
informações organizacionaisPrincipalmente para quem deseja aprender algo novo e se desenvolver em qualquer área de segurança da informação e informática, escreverei e falarei sobre as seguintes categorias:
- NMP;
- criptografia (criptografia);
- tecnologias de rede (Rede);
- reversa (Engenharia Reversa);
- esteganografia (Stegano);
- busca e exploração de vulnerabilidades da 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 pentests e escrita de exploits.
Para que você fique sabendo de novos artigos, softwares e outras informações, criei
Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não assume nenhuma responsabilidade por qualquer dano causado a qualquer pessoa como resultado do uso do conhecimento e métodos obtidos como resultado do estudo deste documento.
Resolvendo a tarefa OTP
Vamos continuar com a segunda seção. Direi desde já que é mais complicado que o primeiro, mas desta vez não 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. Recebemos um endereço e uma porta para conexão.
Nós nos conectamos e examinamos o servidor.
Uma bandeira que não podemos ler, um programa e seu código-fonte. Vejamos a fonte.
Vamos resolver 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 é criado na pasta tmp (os primeiros 8 bytes são otp) e 8 bytes aleatórios são gravados nele (os segundos 8 bytes são otp).
Por algum motivo, o valor do arquivo criado é lido e comparado com a senha inserida.
É aqui que entra a vulnerabilidade. Consiste em salvar intermediáriamente o número gerado em um arquivo. Podemos limitar o tamanho do arquivo, por exemplo, a 0, então ao escrever e ler, 0 será comparado com a senha. Isso pode ser feito assim.
# ulimit -f 0
Agora vamos executar o programa.
Recebemos um erro. Não importa, pode ser processado usando o mesmo python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
Pegamos a bandeira e nossos 100 pontos fáceis. E continuamos: no próximo artigo abordaremos a Web. Você pode se juntar a nós em
Fonte: habr.com