Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux
Neste artigo resolveremos a tarefa 25 do sitio pwnable.kr.

Información organizativaEspecialmente para aqueles que queiran aprender algo novo e desenvolverse en calquera área da información e seguridade informática, escribirei e falarei sobre as seguintes categorías:

  • PWN;
  • criptografía (Crypto);
  • tecnoloxías de rede (Rede);
  • inversa (Enxeñaría inversa);
  • esteganografía (Stegano);
  • busca e explotación de vulnerabilidades WEB.

Ademais disto, compartirei a miña experiencia en informática forense, análise de malware e firmware, ataques a redes sen fíos e redes de área local, realización de pentests e escritura de exploits.

Para axudarche a estar ao día dos novos artigos, software e outra información, creei Canle de telegrama и grupo para discutir calquera cuestión no campo de I&KB. Tamén as túas peticións, preguntas, suxestións e recomendacións persoais Vou analizalo persoalmente e responderei a todos..

Toda a información preséntase só con fins educativos. O autor deste documento non acepta ningunha responsabilidade polos danos causados ​​a ninguén como resultado do uso dos coñecementos e técnicas obtidos co estudo deste documento.

Resolvendo a tarefa otp

Continuemos coa segunda sección. Enseguida direi que é máis complicado que o primeiro, pero esta vez non proporcionan o código fonte do programa. Non te esquezas da discusión aquí (https://t.me/RalfHackerPublicChat) e aquí (https://t.me/RalfHackerChannel). Imos comezar.

Fai clic na icona coa sinatura otp. Ofrécenos un enderezo e un porto para conectarnos.

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Conectamos e miramos ao redor do servidor.

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Unha bandeira que non podemos ler, un programa e o seu código fonte. Vexamos a fonte.

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Imos resolver. O programa toma un contrasinal como argumento.

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

A continuación, almacénanse 16 bytes aleatorios na variable otp.

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

No cartafol tmp créase un ficheiro cun nome aleatorio (os primeiros 8 bytes son otp) e escríbense nel 8 bytes aleatorios (os segundos 8 bytes son otp).

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Por algún motivo, o valor do ficheiro creado é lido e comparado co contrasinal introducido.

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Aquí é onde entra a vulnerabilidade. Consiste en gardar de forma intermedia o número xerado nun ficheiro. Podemos limitar o tamaño do ficheiro, por exemplo, a 0, entón ao escribir e ler, compararase co contrasinal 0. Isto pódese facer así.

# ulimit -f 0

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Agora imos executar o programa.

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Recibimos un erro. Non importa, pódese procesar usando o mesmo python.

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

Resolvendo a tarefa con pwnable.kr 25 - otp. Límite de tamaño de ficheiro de Linux

Conseguimos a bandeira e os nosos 100 puntos fáciles. E seguimos: no seguinte artigo tocaremos na Rede. Podes unirte a nós en Telegrama.

Fonte: www.habr.com

Engadir un comentario