Pular para o conteúdo

Web

PHP-CGI, o hífen que não era hífen

Em 2024, a CVE-2024-4577 reabriu no Windows uma injeção de argumento que parecia enterrada. Quando o PHP roda como CGI, ele recebe a string de consulta da URL como se fossem argumentos de linha de comando. Havia uma defesa contra isso, mas no Windows uma conversão de página de código chamada "best-fit" a furava: certos caracteres sem correspondência exata são trocados por um ASCII parecido. O hífen suave (byte 0xAD) vira um hífen de verdade (0x2D), e um argumento que começa com hífen vira uma OPÇÃO. Assim uma palavra como %ADd na URL vira -d, e -d liga diretivas do PHP que levam a execução de código.

Você tem request.http (o pedido com a string de consulta crua), best-fit.txt (a tabela de conversão) e argv_decode.py (aplica a conversão e mostra o argv). Rode python3 argv_decode.py e diga qual byte de ENTRADA, pela conversão best-fit, vira o hífen que transforma uma palavra em opção -d.

Responda no formato de flag com o byte em hexadecimal, por exemplo tocaia{0x20} (que não é a resposta).

Arquivos do desafio

  • request.http

    189 B · SHA-256 08e0c66ae2ff7e26…

    Baixar
  • best-fit.txt

    633 B · SHA-256 08b00cd7a941c1eb…

    Baixar
  • argv_decode.py

    956 B · SHA-256 315e2147e1011f44…

    Baixar

Tudo se resolve com ferramentas gratuitas.