Rating:

## Solution

After exhausting common RSA attacks in this form of, such as __Hastad's Broadcast Attack__, I concluded that maybe there should be a way to factorize the public keys, using all messages.

I soon realized that the __N's are not coprime!__, and we can use each one to decompose the public keys completely.

```python
n1 = 23795719145225386804055015945976331504878851440464956768596487167710701468817080174616923533397144140667518414516928416724767417895751634838329442802874972281385084714429143592029962130216053890866347
n2 = 46914096084767238967814493997294740286838053572386502727910903794939283633197997427383196569296188299557978279732421725469482678512672280108542428152186999218210536447287087212703368704976239539968977
n3 = 24543003393712692769038137223030855401835344295968717177380639898023646407807465197761211529143336105057325706788229129519925129413109571220297378014990693203802558792781281981621549760273376606206491

p1 = gcd(n1, n2)
p2 = gcd(n1, n3)
p3 = gcd(n2, n3)

assert n1 == p1*p2
assert n2 == p1*p3
assert n3 == p2*p3
```

From here it is fairly straightforward to decrypt each message to get the flag

`TMCTF{B3Car3fu11Ab0utTh3K3ys}`

__Note for implementation details see the link__

Original writeup (https://github.com/pberba/ctf-solutions/tree/master/20180915_trendmicro/analysis_offensive_300).