ctf小练
rsa256
下载解压后发现有四个文件
➜ fujian ls
encrypted.message1 encrypted.message2 encrypted.message3 public.key
公钥和三个密文文件
ok,查看公钥
➜ fujian openssl rsa -pubin -in public.key -text -modulus
Public-Key: (256 bit)
Modulus:
00:d9:9e:95:22:96:a6:d9:60:df:c2:50:4a:ba:54:
5b:94:42:d6:0a:7b:9e:93:0a:ff:45:1c:78:ec:55:
d5:55:eb
Exponent: 65537 (0x10001)
Modulus=D99E952296A6D960DFC2504ABA545B9442D60A7B9E930AFF451C78EC55D555EB
writing RSA key
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhANmelSKWptlg38JQSrpUW5RC1gp7npMK
/0UceOxV1VXrAgMBAAE=
-----END PUBLIC KEY-----
模数M比较小 ,尝试直接分解,factor.db
分解成功,解决,下面解密
利用RSAtool(可以参考ctf-wiki)生成私钥
➜ rsatool git:(master) python rsatool.py -f PEM -o private.pem -p 302825536744096741518546212761194311477 -q 325045504186436346209877301320131277983
Using (p, q) to initialise RSA instance
n =
d99e952296a6d960dfc2504aba545b9442d60a7b9e930aff451c78ec55d555eb
e = 65537 (0x10001)
d =
4547b732cbc3527104cb57c4728d6899b44c4994fae2713d6b594bc0f522a41
p = 302825536744096741518546212761194311477 (0xe3d213b0a3c9551f9fb1eb8d7c3daf35)
q = 325045504186436346209877301320131277983 (0xf4897caaba80236bdc1b59385c4bf49f)
Saving PEM as private.pem
解密
➜ fujian openssl rsautl -decrypt -inkey private.pem -in encrypted.message1 -out flag1
➜ fujian openssl rsautl -decrypt -inkey private.pem -in encrypted.message2 -out flag2
➜ fujian openssl rsautl -decrypt -inkey private.pem -in encrypted.message3 -out flag3
然后将三个文件合并,或者手动拼起来
➜ fujian cat flag
flag{3b6d3806-4b2b-11e7-95a0-000c29d7e93d}
Tips:合并文件部分
➜ fujian cat flag1 flag2 flag3 > flag ➜ fujian cat flag flag{3b6d3806-4b2b -11e7-95a0- 000c29d7e93d}如何去掉换行符呢
➜ fujian vim flag然后:%s/\n//g
➜ fujian cat flag flag{3b6d3806-4b2b-11e7-95a0-000c29d7e93d}稳了