[羊城杯 2020]GMC
[羊城杯 2020]GMC
题目
from Crypto.Util.number import getPrime,bytes_to_long,getRandomNBitInteger
from secret import flag
from gmpy2 import gcddef gmc(a, p):if pow(a, (p-1)//2, p) == 1:return 1else:return -1def gen_key():[gp,gq] = [getPrime(512) for i in range(2)]gN = gp * gqreturn gN, gq, gpdef gen_x(gq,gp):while True:x = getRandomNBitInteger(512)if gmc(x,gp) ^ gmc(x,gq) == -2:return xdef gen_y(gN):gy_list = []while len(gy_list) != F_LEN:ty = getRandomNBitInteger(768)if gcd(ty,gN) == 1:gy_list.append(ty)return gy_listif __name__ == '__main__':flag = bin(bytes_to_long(flag))[2:]F_LEN = len(flag)N, q, p = gen_key()x = gen_x(q, p)y_list = gen_y(N)ciphertext = []for i in range(F_LEN):tc = pow(y_list[i],2) * pow(x,int(flag[i])) % Nciphertext.append(tc)with open('./output.txt','w') as f:f.write(str(N) + '\n')for i in range(F_LEN):f.write(str(ciphertext[i]) + '\n')
解题
程序如何加密的还是挺容易看出来的,关键就是怎么逆过去了。。。
from Crypto.Util.number import *
def isqr(x,p):if p==1 or x==1:return 1sgn=1while x%2==0:x=x//2if p%8==3 or p%8==5:sgn=-sgnif x<p:_tmp=pp=xx=_tmpif x%4==3 and p%4==3 :sgn=-sgnreturn sgn*isqr(x%p,p)
n,s=0,[]
fp=open("output.txt","r")
n=int(fp.readline())
while True:try:a=int(fp.readline())s.append(a)except:break
assert len(s)+1==304
ans=""
for i in s:if(isqr(i,n)==1):ans+='0'else:ans+='1'
print(long_to_bytes(int(ans,2)))
参考代码
运行得到:b'GWHT{876db950c1424a8e49d50cdcc0b3a86e}'
答案
flag{876db950c1424a8e49d50cdcc0b3a86e}
[羊城杯 2020]GMC相关推荐
- [羊城杯 2020]Power
[羊城杯 2020]Power 题目 from Crypto.Util.number import * import gmpy2 from secret import flagp = getPrime ...
- [羊城杯 2020]RRRRRRRSA
[羊城杯 2020]RRRRRRRSA 题目 import hashlib import sympy from Crypto.Util.number import *flag = 'GWHT{**** ...
- [羊城杯 2020]Bytecode [UTCTF2020]babymips
文章目录 [羊城杯 2020]Bytecode 查看题目 python代码 注意点: BINARY_SUBTRACT 这个是减法 BINARY_SUBSCR 这个是索引 Z3约束脚本 注意点: 注意最 ...
- [羊城杯 2020]login [SUCTF2019]hardcpp
文章目录 [羊城杯 2020]login 思路:一个py编译的exe,需要解包,然后反编译成py文件 1.解包:python pyinstxtractor.py login.exe 提示:pyinst ...
- [羊城杯 2020]逃离东南亚
[羊城杯 2020]逃离东南亚 考点 复现过程 参考链接 考点 1.图片高度隐写 2.silenteye 3.空格与tab隐写 4.需要编程找到隐写内容并进行解码 复现过程 解压压缩包有三个压缩包文件 ...
- [羊城杯2020]easyphp --- 伪协议的使用时机,---python上传.htaccess的利用 -- preg_match绕过
目录: 一. 自己做: 二.学到的.不足: 三. 1. 利用.htaccess来设置文件自动包含 2. 绕过 \n 的过滤 3. 绕过stristr的过滤. 4. 绕过preg_match 2.思路二 ...
- buuctf————[羊城杯 2020]login
1.查壳. 无壳,64位.(当时还不知到PyInstaller ) 2.直接丢到IDA反编译.发现啥也没有. (连个提示性的字符串也没有,但运行是有input something.很迷.) 看了看大佬 ...
- [羊城杯 2020]easyre
用PE查壳 用ida打开找到main函数 int __cdecl main(int argc, const char **argv, const char **envp) {int v3; // ea ...
- [羊城杯 2020] Web
easycon 打开就是 扫出来个index.php 然后访问 提示eval post cmd,看来是post了个cmd可以执行命令 找到bbbbbbbbb.txt文件,用base64解码得到包含fl ...
最新文章
- 从CIO视角出发审视云环境下的安全议题
- 洛谷 P2818 天使的起誓
- Js中 call() 与 apply() exports
- 牛客 - Dress as women(sg定理+位运算)
- android 多界面光标,android.database.CursorWindowAllocationException:光标窗口分配2048 kb失败,即使关闭游标...
- 【java设计模式之Command(菜单命令) 】
- 前端学习(1352)模板语法
- Linux日志文件utmp、wtmp、lastlog、messages
- java拆分list_Java平均拆分list
- C++ 函数参数中和区别
- VFP DownFileX下载异常问题
- 微信开发平台对接流程(Java版本)1
- win10 修改gitlab账号_win10--git安装以及gitlab配置
- 二元函数偏导数的几何意义
- Unity3D手机斗地主游戏开发实战(01)_发牌功能实现
- C# 串口接收含有asic2=0x3f时发生的故障
- 传输层协议------TCP协议
- Python加密word文档
- 小米5无线显示如何连接到服务器,小米电视无线显示怎么用?详细操作方法
- 三极管相关知识点释疑(二)
热门文章
- 企业数据中心夏季冷却散热的十二大技巧
- 运维不得不知道的事 数据中心断电如何做
- 程序员微信头像_这才是程序员的内心独白
- Sklearn:sklearn.preprocessing之StandardScaler 的transform()函数和fit_transform()函数清晰讲解及其案例应用
- CV之PoseEstimation:Pose Estimation人体姿态估计(AI识人,OpenPose+DeepCut+RMPE+Mask RCNN)的简介、案例应用之详细攻略
- Py之keras-resnet:keras-resnet的简介、安装、使用方法之详细攻略
- TF之AE:AE实现TF自带数据集AE的encoder之后decoder之前的非监督学习分类
- 八数码(康拓展开标记)及类似题
- VUE:class与style强制绑定
- python 中给文件加锁——fcntl模块