64位无壳,但是进去连main函数都没有
这里应该是main的头部
这里是一个jmp的花指令
jnz short labela
跳转到labela是一段没用的代码
所以把它和labela全部NOP
往下翻,又是必然跳转至label1
把jz short label1
到db 0
的花指令全部NOP
label3这里也是类似的
回到开头P一下
F5
主函数已经出来了
RSA算法,对字符串每4个字节加密一次
可以得到e=465,n=3162244531
然后做n的因数分解
n因数分解
第一种:在线因式分解网站,例如factordb.com,我们可以利用在线网站快速分解出p,q
第二种:yafu大数分解工具,windows下载地址:
yafu download | SourceForge.net
使用相关命令分解n:
yafu-x64 factor(n) //常规分解n
yafu-x64 “factor(@)” -batchfile 1.txt //把n复制到txt文件中再分解,用于n过长的情况
————————————————
版权声明:本文为CSDN博主「网安福宝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
[CTF密码学]RSA相关题目解题方法与python脚本总结(附例题)_历届ctf竞赛rsa题目-CSDN博客
gmpy2库安装
cmd中输入pip install --only-binary=:all: gmpy2
即可
17行 就是密文与字符串比较,c[]数组就是密文
这里在线分解可得 3162244531=56099*56369
即为p、q的值
通过RSA原理写出脚本:
#FloweyRSA WP
import gmpy2
from Crypto.Util.number import *
'''
C密文
753C2EC5, 8D90C736, 81282CB0, 7EECC470, 944E15D3
2C7AC726, 717E8070, 30CBE439, 0B1D95A9C, 6DB667BB
1240463C, 77CBFE64, 11D8BE59
'''
#n=3162244531=56099*56369(在线因数分解)
e = 465
p = 56099
q = 56369
n = 3162244531
d = gmpy2.invert(e,(p-1)*(q-1))
C = [0x753C2EC5, 0x8D90C736, 0x81282CB0, 0x7EECC470, 0x944E15D3,
0x2C7AC726, 0x717E8070, 0x30CBE439, 0x0B1D95A9C, 0x6DB667BB,
0x1240463C, 0x77CBFE64, 0x11D8BE59]
flag=b''
for c in C:
m=gmpy2.powmod(c,d,n)
flag+=long_to_bytes(m)
print(flag)
#b'flag{reverse_is_N0T_@lways_jusT_RE_myy_H@bIb1!!!!!!}'