# V-TripleT HCMUS CTF Write up ## Factor me Bài này google "factor bignumber known phi" là ra cái https://math.stackexchange.com/questions/2916269/given-varphi-n-and-n-for-large-values-can-we-know-prime-factors-of-n, làm theo là được, có cả code mẫu, sửa chút là thành python :v ![](https://i.imgur.com/jhz03bY.png) ## SignMe Bài này thì nếu suy nghĩ tới việc cần simulate lại hàm sign thì cần tìm được giá trị của các biến: - self.x - self.coef self.x thì có thể tính dễ dàng bằng cách để k=1 (msg = []), từ đó thay công thức từ s ra là tính được self.x ![](https://i.imgur.com/4q5FpFF.png) Tới đây thì nếu vẫn kẹt với suy nghĩ tính self.coef thì có thể hỏi 32 request, mỗi lần tính 1 coeff[i], nhưng cách đó ngu vì tính coeff[i] tốn dpt tầm O(sqrt( p ) * log(sqrt( p ))), thế khá to. Sau 1 lúc thì mình nhận ra là có thể luôn xem coeff[i]=0, vì ở hàm verify không dùng gì tới coeff cả. Thế nên chỉ cần send 1 request để tính self.x, sau đó simulate lại hàm sign (xem coeff[i]=0 với mọi i) là giải được bài. ![](https://i.imgur.com/vgOhEU8.png) ## Oh seed Google "python random ctf": ![](https://i.imgur.com/RXNK2Lb.png) Ta sẽ tìm được cái MTRecover: ![](https://i.imgur.com/2ll9h3q.png) Chạy cái đó là được: ![](https://i.imgur.com/a8VqX8q.png) ## Substitution2 Đầu tiên là từ message đề bài cho thì ta loại offset đi. HCMUSCTF sẽ có 2 chữ C kia, nên trong cái message cuối cùng, tìm vị trí mà có c[i] = c[i + 4], các ký tự đó có khả năng là C. Từ đó sẽ giải được chữ H, M, U, S, T, F nữa. Có các chữ này xong thì ngồi dùng mắt + tiếng anh và đoán: ![](https://i.imgur.com/zzDdziI.png) ## noname1 Bài này là bài gì đó mà ném code vào IDA xong chạy lại code C là có: ![](https://i.imgur.com/e1qxFSq.png) ## Noname2 Bài này là bài gì đó mà cần đọc database. Tạo một account tên là `admin_1k`. Tạo một key `ey` cho tài khoản `admin_1k` thì ta sẽ có signature của `admin_1key`. Lấy cái signature đó đọc `key` của `admin_1` là được. ![](https://i.imgur.com/Ib70NDK.png)