BUUCTF-RE-[SUCTF2019]SignIn

20 篇文章 1 订阅
18 篇文章 1 订阅

BUUCTF-RE-[SUCTF2019]SignIn

查壳

在这里插入图片描述
发现是没有壳的

关键代码审计

找到main函数
在这里插入图片描述

int mpz_init_set_str (mpz_t rop, char *str, int base)
mpz_t rop:多精度整数变量
char *str: 字符串
int base: 进制
将str按照base进制转换为rop
void mpz_powm (mpz_t rop, const mpz_t base, const mpz_t exp, const mpz_t mod) [Function]
函数功能: rop = base^exp取余mod
int mpz_cmp (const mpz t op1, const mpz t op2) [Function]
比较是否相等,若相等返回0

脚本

#encoding:utf-8 
import gmpy2
import binascii
N = 103461035900816914121390101299049044413950405173712170434161686539878160984549
E = 65537
p = 282164587459512124844245113950593348271
q = 366669102002966856876605669837014229419
L = (p-1)*(q-1)
D = int(gmpy2.invert(E, L)) 
'''
gmpy2.invert()返回值类型为<class 'mpz'>
invert(x,y)  计算 x 关于1模 y 的乘法逆元
'''
C = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35
M = gmpy2.powmod(C, D, N)

'''
gmpy2.powmod()返回值类型为<class 'mpz'>
gmpy2.powmod(x,y,z),计算x^y mod z 的值并返回
'''
print(binascii.unhexlify(hex(M)[2:]).decode(encoding="utf-8"))

get flag

suctf{Pwn_@_hundred_years}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值