[Re] babyre2 - mf xp0int Posted on May 20 2019 ### 分析程序 1. 输入account,长度为7-16 2. 输入password,长度为7-16,每个字符为10-99 3. 将account作为key,对一个定值执行转换操作(操作几乎和上一题一样) 4. 输入data,长度为0-1024,只允许输入[0-9a-fA-F] 5. 对password进行转换操作,数据为data(其中要求date的长度为一个较大的值) 6. 将步骤3的结果进行解密,key为步骤5的结果 7. 要求解密的结果最后一位小于4 ### 解答方法 由于最后的要求很简单,只要最后一位小于4即可,所以随机一些数,进行爆破即可。 我们的做法是,固定data和password,随机account的值。 ### 脚本 ```python #!/usr/bin/env python2 # -*- coding: utf-8 -*- from pwn import * import random for x in range(100000): p = process(./babyre2) seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-" sa = [] for i in range(15): sa.append(random.choice(seed)) salt = ''.join(sa) account = salt password = '123123123' data = '1' * 500 p.recvuntil('input the account:') p.send(account) p.recvuntil('input the password:') p.send(password) p.recvuntil('input the data:') p.send(data) ret = p.recvline() if 'capture the flag failed, try again!' not in ret: print(account,ret) p.close() ``` 打赏还是打残,这是个问题 赏 Wechat Pay Alipay [Misc] draw - Donek1 [Pwn] manynotes - cpt.shao
没有帐号? 立即注册