fake-add

Catégorie: Reverse Difficulté: medium Flag: CTF{th1s_is_ju5T_ADD}

Challenge

Description


Just a basic math? Flag format: CTF{text}

Analyse du binaire

La fonction FUN_001011a9 correspond au main

Dedans on peut y voir la chaîne [+] Solve all additions and find the flag!! mais juste avant, on a beaucoup de MOV dans RBP, c’est à dire qu’on met dans la stack tout un tas de valeurs

A partir de 0x0010133b on peut voir que l’on déplace les valeurs de la stack dans EDX et EAX puis qu’on les additionne

Il suffit donc de récupérer l’ensemble de ces valeurs et de les ajouter deux par deux pour obtenir le flag

Script de résolution

stack = [
	0x3c, 0x07, 0x2a, 0x2a, 0x20, 0x26, 0x78, 0x03,
	0x5a, 0x1a, 0x68, 0x00, 0x27, 0x0a, 0x64, 0x0f,
	0x4b, 0x14, 0x5f, 0x0a, 0x64, 0x0f, 0x55, 0x0a,
	0x55, 0x15, 0x55, 0x20, 0x34, 0x01, 0x2a, 0x2a,
	0x35, 0x2a, 0x21, 0x20, 0x21, 0x23, 0x21, 0x23,
	0x64, 0x19
]

def solve():
	return ''.join([chr(stack[i] + stack[i + 1]) for i in range(0, len(stack), 2)])

if __name__ == '__main__':
	print(solve())

Dernière mise à jour

Cet article vous a-t-il été utile ?