题目网址:https://hackmyvm.eu/challenges/challenge.php?c=021
是一道逆向题,开局一个txt文件
赛博厨子用base64解一下
自动分析出来是一个elf文件
点击保存,导出文件
拖进ida里分析一下主函数逻辑

这个程序要求输入一个长度为6的密码,并对其进行一系列检查。我们可以通过逆向工程来找到满足这些条件的密码。
条件如下:
- 密码长度必须为6。
- 密码的第一个字符必须是’P’(ASCII码80)。
- 密码的后五个字符的ASCII码减去48的和必须为24。
- 密码的后五个字符的ASCII码减去48的积必须为2048。
- 密码的第二个字符必须是’8’(ASCII码56)。
根据这些条件,我们可以编写一个Python脚本来找到满足这些条件的密码:
from itertools import product
def find_password():
# 密码的第一个字符必须是'P'
first_char = 'P'
# 密码的第二个字符必须是'8'
second_char = '8'
# 生成所有可能的后三个字符的组合
for chars in product('0123456789', repeat=4):
password = first_char + second_char + ''.join(chars)
# 检查密码长度
if len(password) != 6:
continue
# 检查和
v8 = sum(ord(c) - 48 for c in password[1:])
if v8 != 24:
continue
# 检查积
v7 = 1
for c in password[1:]:
v7 *= ord(c) - 48
if v7 != 2048:
continue
# 如果满足所有条件,返回密码
return password
# 找到满足条件的密码
password = find_password()
print("找到的密码:", password)
这个脚本使用 itertools.product 生成所有可能的后三个字符的组合,并检查每个组合是否满足所有条件。如果找到满足条件的密码,就输出该密码。
最后用HMV包裹一下就是Flag
原文 https://blog.csdn.net/2301_79518550/article/details/145304402