buu re部分wp (四)(未完待续)

1、[GWCTF 2019] pyre

2、rsa

[GWCTF 2019] pyre

下载拿到的是一个pyc文件,要用uncompyle反汇编成py
在这里插入图片描述
输入的字符串经过一次取模一次异或,得到code

注意是每一位和后一位异或,循环次数又是 l -1,所以最后一位没变
在这里插入图片描述
往回逆的思路就是,从后往前每一位和前一位异或,然后。。之前的wp里提过这里逆的时候,要注意是解出的flag跟code异或才能得到下一位flag

取模+128后再次取模这一步要注意,提示了逆的时候如果 imput [i] - i 为负数要加128

#include<iostream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;

int main()
{
    
    
    char code[23] = {
    
     '\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4',  ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13' };
    char temp = '\x13';
    int j = 21;
    int flag[23] = {
    
    };
    flag[0] = '\x13';
    for (int i = 1; i < 23; i++)
    {
    
    
        flag[i] = temp ^ code[j];
        temp = flag[i];    
        j--;
    }
    for (int i = 0; i < 23; i++)
    {
    
    
        flag[i] = (flag[i] - (22 - i)) % 128;
        if (flag[i] < 0)
        {
    
    
            flag[i] += 128;
        }
    }
    for (int i = 22; i >= 0; i--)
    {
    
    
        printf("%c", flag[i]);
    }
}

看别人写的python脚本十分简洁,可惜我是个只会写C++的废物呜呜。。。
在这里插入图片描述
包上flag{}提交即可

rsa

拿到两个文件,pub.key里给出了公钥,由于flag.enc里是乱码,好像不能直接套gmpy2解

由于python的库太过优越,这道题完全得用python(现学。。。

因为公钥是由给定的 n, e 生成的,可以用强大的Crypto库解出n, e
在这里插入图片描述
分解 n ,好用的在线网站
在这里插入图片描述
接下来由于我的 python3 装不了gmpy,python2装不了rsa。。。。

分开写了两个脚本,切换Interpreter运行

先用gmpy2 求出d,才能生成私钥
在这里插入图片描述
用 rsa库 解出flag
在这里插入图片描述
PS: rsa 库在setting里面可以搜到,直接 install package 即可
在这里插入图片描述
emmmmm因为写了三个。。。就不放脚本了。。吧。。( 想要的可以评论 ?

开学第一天!写完wp要去写工数作业了唉。。。。

猜你喜欢

转载自blog.csdn.net/m0_51357657/article/details/114266003