
Neste artigo, resolveremos a 25ĀŖ tarefa do site .
Informações organizacionaisEspecialmente para aqueles que desejam aprender algo novo e se desenvolver em qualquer Ôrea da segurança da informação e da computação, escrevo e compartilho sobre as seguintes categorias:
- PWN;
- criptografia (Crypto);
- tecnologias de rede (Network);
- engenharia reversa (Reverse Engineering);
- esteganografia (Stegano);
- pesquisa e exploração de vulnerabilidades WEB.
Além disso, compartilharei minha experiência em crimes computacionais, 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ê possa se manter informado sobre novos artigos, software e outras informações, eu criei e na Ôrea de segurança da informação e gestão de riscos. Além disso, suas solicitações pessoais, perguntas, sugestões e recomendações .
Todas as informações estão apresentadas exclusivamente para fins educacionais. O autor deste documento não se responsabiliza por quaisquer danos causados a terceiros como resultado do uso dos conhecimentos e métodos obtidos através do estudo deste documento.
Solução da tarefa otp
Continuamos a segunda seção. Direi de antemĆ£o que Ć© mais difĆcil que a primeira, mas desta vez fornecem o código-fonte do programa. NĆ£o esqueƧamos da discussĆ£o aqui(https://t.me/RalfHackerPublicChat) e aqui (https://t.me/RalfHackerChannel). Vamos comeƧar.
Clicamos no Ćcone com a legenda otp. Eles nos fornecem um endereƧo e uma porta para conexĆ£o.

Conectamos e exploramos o servidor.

A bandeira que não conseguimos ler, o programa e seu código-fonte. Vamos ver o código-fonte.

Vamos descompactĆ”-lo. O programa aceita uma senha como argumento.

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

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

Por algum motivo, o valor desse arquivo criado Ć© lido e comparado com a senha inserida.

Aqui estÔ a vulnerabilidade. Ela reside na salvaguarda intermediÔria do número gerado em um arquivo. Podemos restringir o tamanho do arquivo, por exemplo, a 0, então ao gravar e ler com a senha, serÔ comparado 0. Podemos fazer isso assim.
# ulimit -f 0 ![]()
Agora vamos executar o programa.
![]()
Recebemos um erro. NĆ£o se preocupe, pois pode ser tratado com o mesmo Python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" ![]()
Recebemos a bandeira e nossos fÔceis 100 pontos. E seguimos: no próximo artigo, abordaremos Web. Você pode se juntar a nós em .
Fonte: habr.com
