Qualidades: CTF nacional de segurança cibernética da Arábia Saudita e Omã em 2019. WriteUp

Oi Habr.

Nos dias 7 e 9 de fevereiro de 2019, a etapa de qualificação da competição ocorreu no site de cybertalents, o objetivo é buscar talentos cibernéticos para Omã e Arábia Saudita. Pessoas de outros países, de acordo com as regras do evento, participam fora da competição. Sob gato - análise de certas tarefas.



A competição consiste em 9 tarefas, quatro delas com o nível de dificuldade "fácil", quatro com "médio", uma com "difícil". Para cada tarefa, 50, 100 e 200 pontos são dados, respectivamente. As tarefas também são categorizadas. Abaixo está uma solução para alguns problemas.

Voltar ao básico


Fácil, Web Analytics
não há muitas opções. Não é necessário abrir um link a partir de um navegador, sempre há uma maneira diferente
Dado um link como exemplo.com/somepage. Quando você clica nele, somos redirecionados (301 movidos permanentemente) para a mesma página com uma barra no final e ela, por sua vez, redireciona para google.com:



Vamos tentar a solicitação POST para a segunda página:



var _0x7f88=["","join","reverse","split","log","ceab068d9522dc567177de8009f323b2"];function reverse(_0xa6e5x2){flag= _0xa6e5x2[_0x7f88[3]](_0x7f88[0])[_0x7f88[2]]()[_0x7f88[1]](_0x7f88[0])}console[_0x7f88[4]]= reverse;console[_0x7f88[4]](_0x7f88[5]) 

Passe suavemente o código através do JS embelezar:

 function reverse(_0xa6e5x2) { flag = _0xa6e5x2['split']('')['reverse']()['join']('') } console['log'] = reverse; console['log']('ceab068d9522dc567177de8009f323b2') 

Bandeira: 2b323f9008ed771765cd2259d860baec

Eu amo imagens


Análise Forense Digital Fácil
Um hacker nos deixou algo que nos permite rastreá-lo nesta imagem, você consegue encontrar?
A imagem é anexada à tarefa:


Link da imagem

Solução
Abra no editor hexadecimal. Observe que o formato png possui um trailer “IEND” (49 45 4E 44). Nós olhamos para o final:

Observa-se que informações adicionais são adicionadas ao final do arquivo. A primeira suposição é base32, porque todas as letras em um caso. Descriptografar:
FLAG{Not_Only_Base64}

Eu amo esse cara


Engenharia reversa de malware e médio
Você pode encontrar a senha para obter a bandeira?
Arquivo Dan

Solução
Pule o arquivo através do Detect It Easy:



Abra o DNSpy x86

O arquivo é realmente muito pequeno e consiste em um evento do usuário - Button_Click:

 string value = new string(new char[] { this.Letters[5], this.Letters[14], this.Letters[13], this.Letters[25], this.Letters[24] }); if (this.TextBox1.Text.Equals(value)) { MessageBox.Show(new string(new char[] { this.Letters[5], this.Letters[11], this.Letters[0], this.Letters[6], this.Letters[26], this.Letters[8], this.Letters[28], this.Letters[11], this.Letters[14], this.Letters[21], this.Letters[4], this.Letters[28], this.Letters[5], this.Letters[14], this.Letters[13], this.Letters[25], this.Letters[24], this.Letters[27] })); } 

Também na classe atual, a linha é declarada:
 public char[] Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ{}_".ToCharArray(); 

Existem duas soluções - em estática e dinâmica. Primeiro, resolvemos pelo método estático:

 # text -   >>> for i in range(len(letters)): text = text.replace(f"this.Letters[{i}]", letters[i]) >>> print(text) string value = new string(new char[] { F, O, N, Z, Y }); if (this.TextBox1.Text.Equals(value)) { MessageBox.Show(new string(new char[] { F, L, A, G, {, I, _, L, O, V, E, _, F, O, N, Z, Y, } })); } 

Quando nos certificamos de que o programa não é prejudicial, podemos depurá-lo em dinâmica. Colocamos o ponto de interrupção (ponto de interrupção, ponto de interrupção) no início do método, procuramos variáveis ​​locais, obtemos a variável value, após o que receberemos uma mensagem com um sinalizador.

Bandeira: FLAG{I_LOVE_FONZY}

Apenas mais uma conferência


Fácil, Informações Gerais
A famosa conferência sobre segurança cibernética, realizada pela OWASP em diferentes locais
Flag
Appsec

Source: https://habr.com/ru/post/pt439590/


All Articles