65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| ## RSA Noob
 | |
| The main idea finding the flag using RSA function and its operations.
 | |
| 
 | |
| #### Step-1:
 | |
| After we download `rsanoob(1).txt` from the cloud, we try to understand what is the content.
 | |
| 
 | |
| If anyone is unaware of RSA Encryption, they can checkout here:
 | |
| 
 | |
| https://en.wikipedia.org/wiki/RSA_(cryptosystem)
 | |
| 
 | |
| #### Step-2:
 | |
| The contents of `rsa (1).txt` are as follows:
 | |
| 
 | |
| ```
 | |
| e: 1
 | |
| c: 9327565722767258308650643213344542404592011161659991421
 | |
| n: 245841236512478852752909734912575581815967630033049838269083
 | |
| ```
 | |
| #### Step-3:
 | |
| 'e' and 'n' - Public key.
 | |
| 'c' - Cipher text.
 | |
| 
 | |
| Given `n` to us, we try to find `p` & `q` online from http://factordb.com/index.php
 | |
|  
 | |
| #### Step-4:
 | |
| We get the `p` & `q` online as follows:
 | |
| <img src="Factorize.png">
 | |
| 
 | |
| Now we can feed inputs manually to yield flag.
 | |
| 
 | |
| #### Step-5:
 | |
| 
 | |
| Running this `Flag.py` script:
 | |
| 
 | |
| ```
 | |
| from Crypto.Util.number import inverse
 | |
| import binascii
 | |
| 
 | |
| e = 1
 | |
| c = 9327565722767258308650643213344542404592011161659991421
 | |
| n = 245841236512478852752909734912575581815967630033049838269083
 | |
| 
 | |
| # From factordb
 | |
| 
 | |
| p = 416064700201658306196320137931
 | |
| q = 590872612825179551336102196593
 | |
| 
 | |
| phi = (p-1) * (q-1)
 | |
| 
 | |
| d = inverse(e,phi)
 | |
| m = pow(c,d,n)
 | |
| 
 | |
| hex_str = hex(m)[2:] # Removing '0x'
 | |
| print(binascii.unhexlify(hex_str))
 | |
| ```
 | |
| 
 | |
| #### Step-6:
 | |
| We get the flag by `python3 Flag.py`
 | |
| 
 | |
| We get this output:
 | |
| `b'abctf{b3tter_up_y0ur_e}'`
 | |
| 
 | |
| #### Step-7:
 | |
| Finally the flag becomes:
 | |
| `abctf{b3tter_up_y0ur_e}` |