###### tags: `writeups` # Writeup for baby_rsa in GUET_CTF2019 ## 0x00 Observation 用16进制编辑器*WinHex*打开,能看到以下信息。 ![WinHex内容](https://i.imgur.com/CsrWbEG.png) 这道题直接给出了 1. p+q 2. (p+1)(q+1) 3. e 4. d 5. c 要解密,需要**c**、**d**、**n**。现在只需要求出n即可。而 ``` n = p*q = (p+1)(q+1)-(p+q)-1 ``` 因此可以直接通过简单的加减法即可求得n。 ## 0x01 Script ```python # -*- coding: utf-8 -*- from binascii import unhexlify paq = 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea pmq = 0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740 e = 0xe6b1bee47bd63f615c7d0a43c529d219 d = 0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5 c = 0x50ae00623211ba6089ddfae21e204ab616f6c9d294e913550af3d66e85d0c0693ed53ed55c46d8cca1d7c2ad44839030df26b70f22a8567171a759b76fe5f07b3c5a6ec89117ed0a36c0950956b9cde880c575737f779143f921d745ac3bb0e379c05d9a3cc6bf0bea8aa91e4d5e752c7eb46b2e023edbc07d24a7c460a34a9a n = pmq - paq - 1 m = pow(c, d, n) print(unhexlify(hex(m).strip('0x'))) # b'flag{cc7490e-78ab-11e9-b422-8ba97e5da1fd}' ``` ## 0x02 Afterword 其实这一道题可以不用给出d,根据p和q的关系直接算出n的欧拉函数φ(n)=(p-1)(q-1),再根据d是φ(n)模n的逆模求出d,最后解密。