# PicoCTF - Crypto
## No Padding, No Problem:

mình nhận được một đường truy cập đến sever, thử nó thôi:
`nc mercury.picoctf.net 2671`

đó là những gì mình nhận được, thử gửi các giá trị thì nhận được mã hóa tương ứng bằng mã hóa RSA
sau khi tìm hiểu bằng từ khóa `No Padding` thì mình đã biết bài này được mã hóa bằng `homomorphic encryption`
Trong bài này là mã hóa RSA cho chúng ta n và e nên mình sẽ
sử dụng công thức dưới đây:
$$
\mathcal{E}(m_{1}) \cdot \mathcal{E}(m_{2}) = m_{1}^{e}m_{2}^{e} \mod n \\
= (m_{1}m_{2})^{e} \mod n \\
= \mathcal{E}(m_{1} \cdot m_{2})
$$
giờ chỉ cần lấy $m_{1} = 2$ và mã hóa nó bằng RSA, thực hiện nhân với ciphertext, sau đó decrypt bằng chương trình đã cho thì nhận được $m*2$ chia 2 thì nhận được plaintext
đây là cách thực hiện:

tính $\mathcal{E}(m_{1}) \cdot \mathcal{E}(m_{2})$ với $m_{1} = 2$, $\mathcal{E}(m_{2}) = ciphertext$

gửi giá trị trên vào chương trình để nhận được gtri $m*2$

chia 2 và chuyển về bytes để nhận flag.
flag là: `picoCTF{m4yb3_Th0se_m3s54g3s_4r3_difurrent_5814368}`
## Scrambled: RSA

Đề cho ta một địa chỉ truy cập sever:`nc mercury.picoctf.net 58251`
khi truy cập đến sever mình nhận được một đoạn flag rất dài, n và e vì flag dài quá nên mình khỏi đưa lên đây
sever cho phép gửi giá trị đến và mã hóa nó

với các bài như này mình sẽ thử các giá trị `0, 1 và -1`thì mình nhận thấy nó không tuân theo mã hóa RSA

theo như hint của đề bài

nên mình thử spam 1 nhiều lần thì kết quả vẫn vậy, nhưng khi spam -1 thì sau 3 lần mình nhận được kết quả khác

thật là ảo =)))) có thể bài này mình phải học thêm kiến thức mới nữa thì mới làm được
mình gà tiếng anh nên hình như người ta bảo nhập 1 lần vô nhiều ký tự giống nhau để xem sự khác biệt. =)))
cùng thử nào?

như đã thấy thì giá trị khi đưa `a` vào encrypt chính là phần sau của `aa`
thử với `ab`

Nhận thấy, a chỉ nằm trong `ab` nhưng không biết nó nằm ở vị trí nào và `b` thì không xuất hiện trong `ab`