XCTF-Web Nova Pergunta-PHP2 (NO.GFSJ0234)

Nova pergunta XCTF-PHP2 (NO.GFSJ0234)

Ligue a máquina de destino e inicie o ambiente virtualInsira a descrição da imagem aqui

Copie o URL e abra-o com o Firefox
Insira a descrição da imagem aqui

"Você consegue fazer login neste site?" é exibido e não há resposta ao clicar em qualquer área. Neste momento, pressione "F12" para abrir o código-fonte da página da web e visualizá-lo.
Insira a descrição da imagem aqui

Você também pode entrar no console da linha de comando “curl -i 网址”para visualizar os resultados retornados.
Insira a descrição da imagem aqui

O Firefox verificou o código-fonte e não encontrou nada. Olhando novamente para o prompt de pergunta, podemos adivinhar que se trata de conteúdo php. Você pode usar Yujian para verificar o plano de fundo e ver index.phpo arquivo.
Insira a descrição da imagem aqui

Então verifiquei de acordo com a URL do resultado da verificação, e o resultado ainda mostrava apenas o conteúdo anterior.
Insira a descrição da imagem aqui

Neste momento, pensei que o arquivo phps fosse na verdade o arquivo de código-fonte do php. Em circunstâncias normais, ele é usado para exibir diretamente o conteúdo do código php aos usuários (visitantes) em um navegador da web. Como os usuários não podem ver o conteúdo dos arquivos php diretamente através de um navegador da web, eles precisam usar arquivos phps. Visualize no Firefox e no console de linha de comando:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

O código principal é o seguinte:

<?php
if("admin"===$_GET[id]) {
    
    
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
    
    
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

Interpretação do código:
O valor do id recebido é igual “$_GET[id] = urldecode($_GET[id])”ao valor que ainda é "admin" após o processamento da função. Esta função é uma função de decodificação de url, ou seja, o valor do URL que precisa ser inserido com um valor de id de "admin" é criptografado em hexadecimal. Use o URL para adicioná-lo on-line. Descriptografando conversões de sites
Insira a descrição da imagem aqui

Adicione o resultado da conversão "?=%61%64%6d%69%6e" diretamente após o URL, mas o sinalizador ainda não pode ser obtido
Insira a descrição da imagem aqui

É possível que "%" também precise ser codificado em URL. Aqui, "%61%64%6d%69%6e" é codificado e convertido novamente para obter "%2561%2564%256d%2569%256e". Após a transmissão , a bandeira é obtida
Insira a descrição da imagem aqui

Perceber:

Verificou-se no código que ela existe if("admin"===$_GET[id]) e if("admin"==$_GET[id])está relacionada à sintaxe do PHP, ou seja “==”, “==”o operador apenas compara valores, independente do tipo de dado da variável, podendo ocorrer alguns resultados de comparação que não estejam de acordo com o esperado; e o operador “===”é o operador de congruência em PHP. É usado para comparar se dois valores de variáveis ​​​​e tipos de dados são iguais.

Referência:
Mundo de Ataque e Defesa XCTF PHP2
CTF_EXP02: XCTF PHP2

Acho que você gosta

Origin blog.csdn.net/MANCXUARY/article/details/132199781
Recomendado
Clasificación