Mundo de ataque reverso e defesa (zona de iniciantes) (2)

2. 《jogo》

Primeiro abra-o para ver como ele se parece e, em seguida, use a ferramenta para obter 32 bits; abaixo, usamos ida e od para resolver o problema.

1.IDA

Considerando que o código antes de 28 linhas não é importante, ele não será colocado aqui para ocupar espaço.Ao mesmo tempo, se o IDA não puder obter corretamente o nome da função personalizada, o IDA usará sub__ mais o endereço inicial da função personalizada para definir a função Primeiro nome

A v2 na linha 35 é atribuída ao valor de entrada e, em seguida, se faz a v2 pertencer a [0,8]

Aqui podemos concluir que cada bit de byte_532E28 é 1 e ele entrará em sub_457AB4 (), achamos que esse pode ser o local em que a bandeira está apagada.

Continue a seguir sub_457AB4 ()

Peça omitida aqui ...

Basicamente, pode-se inferir que a última é a função de impressão; então, podemos obter a flag desde que calculemos o loop for e o script

a = [123,32,......,126,0]
b = [18,64,......,16,0]
c = 0
flag = ''

while (c<56):
    a[c] ^= b[c]
    a[c] ^= 0x13
    flag = flag + chr(a[c])
    c = c + 1
print(flag)

 

2. A partir

Primeiro encontre o endereço que pode ser o último sinalizador, faça o acompanhamento

Aquele com o ícone 1 é o endereço do acompanhamento. O local em que olhamos para a marca 2 é o endereço da função que nos iniciou. Siga a seta vermelha e procure por todo o caminho para encontrar o endereço do salto.

Lembre-se deste endereço: E37AB4, procuraremos novamente o local da falha

Continue acompanhando

Nesse ponto, precisamos sobrescrever apenas a função que pode alcançar diretamente o sinalizador, digite jmp 0xE37AB4

Depois de salvar o arquivo, digite qualquer valor,

Publicado 25 artigos originais · Gostei 14 · Visitas 5445

Acho que você gosta

Origin blog.csdn.net/qq_40568770/article/details/104689848
Recomendado
Clasificación