Flag Checker Solver
Uma utilização da biblioteca angr é a criação de scripts para resolver programas que verificam se o input do usuário se corresponde à flag. O Arquivo script.py
possuí um script simples para a resolução desses tipos de programas.
Utilização
Para a utilização do script, é preciso se atentar em algumas parte dos código.
No começo do script, é preciso alterar o tamanho da flag em FLAG_LEN
e colocar o nome do programa. Além disso, é importante colocar o endereço base do programa. Esse endereço pode ser encontrado em ferramentas como o ghidra, porém, se o programa possui PIE
, o endereço base padrão será 0x400000
.
Além disso, é preciso alterar o estado inicial com o argumento com o nome do executável:
A parte mais importante do funcionamento do script, é a definição das variáveis good_address
e avoid_address
. Essas variáveis vão dizer para a função explore quais endereços que são acessados quando o programa recebe o input correto e quando recebe o input incorreto. Então, a variável good_address
deve receber algum endereço que só é acessado quando o usuário digita a flag correta, e avoid_address
deve receber algum endereço que só é acessado quando o usuário digita o input incorreto.
Referências
Script Utilizado: https://github.com/Dvd848/CTFs/blob/master/2020_GoogleCTF/Beginner.md
Atualizado