# cyberquest_ctf writeups (13/10/2023) #Flag_format : W1{FLag} ## Scan me **Description** : Scan me if you can... Mình được BTC cung cấp một tấm ảnh 5000x5000 pixels có dạng như một ma trận. Gợi ý của bài là "Scan me" nên khi phóng to tấm ảnh ta được một tập hợp các mã QR code được xếp đều theo dạng ma trận . Link tải ảnh : https://bom.so/iSRxjM Hướng tiếp cận là quét tất cả các QR code để tìm Flag có dạng W1{Flag} Để việc quét các mã QR không bị thiếu , ta đi chia các qr codes tương ứng với sections ![](https://hackmd.io/_uploads/Sy-znZtb6.png) và đem đi decode bằng utf-8 ![](https://hackmd.io/_uploads/By243-tWa.png) ta được kết quả flag như sau : ![](https://hackmd.io/_uploads/S1nW6-Yb6.png) Flag : W1{do_anh_bat_duoc_em} --- ## A letter i send love to you **Description** : Maybe someone, jealous of my love story, tore the letter I sent to my beloved into a hundred pieces. Please help me restore it and send it to her. Thank you!!! Được cung cấp 100 file csv, mỗi file tương ứng với một piece của bức thư. Theo gợi ý, thì mình nhận ra sẽ phải ghép 100 piece lại với nhau để xem được nội dung. Khi xem file csv thì thấy rằng chúng đều có kích thước là (*,2) Vì vậy, ta đi concat 100 file csv lại với nhau. ![](https://hackmd.io/_uploads/SJ8C-fYWp.png) Muốn hiển thị ra flag sau khi concat lại thì lúc đó mình chỉ hình dung được ý tưởng là plot nó theo hàm scatter và show lên ![](https://hackmd.io/_uploads/ry8DGfYWT.png) sau đó ta được kết quả như hình dưới : ![](https://hackmd.io/_uploads/SJyTGztba.png) Flag : W1{TE4M_CUT3} --- ## Echo in the Cosmos **Description**: In a resplendent space station floating amid the vast cosmos, scientists and engineers have dedicated their lives to protecting Earth from the various threats emanating from space. Among these, one of the most significant threats is the giant asteroids and spatial objects hurting towards our blue planet at terrifying speeds. The research team has developed a new technology: a voice assistant named "Echo," designed to control rockets and space defense systems more flexibly and efficiently. "Echo" is not only intelligent but also capable of learning and adapting to real-time emergency situations. Sau khi đọc description, thì có vẻ bài toán liên quan đến NLP. BTC cung cấp một file 'architecture.py' có chứa một language model sử dụng pytorch và một file 'bigram_model.pth' chứa trọng số mô hình đã được train. Language model là một mô hình bigram, sử dụng embedding và một lớp linear. Embedding được thiết lập với kích thước 64. Lớp linear nhận input từ embedding và đưa output có kích thước bằng vocab_size. Hàm forward tính toán đầu ra và loss (nếu có). ![](https://hackmd.io/_uploads/BJHLiTtWp.png) Ta sẽ đi tạo tệp mới, và define lại language model ở trên Đầu tiên là nạp trọng số mô hình và cập nhật vocab_size ![](https://hackmd.io/_uploads/rkK2R6Y-a.png) Hướng đi của bài này là build một cái hàm dựa trên model có sẵn để có thể generate ra text và trong nội dung của text đó sẽ có chứa flag Vậy nên ta đi viết hàm generate_text như sau : ![](https://hackmd.io/_uploads/Hk7Jcy9Za.png) Hàm trên sử dụng mô hình để dự đoán ký tự tiếp theo dựa trên ngữ cảnh của ký tự trước đó và thêm chúng vào kết quả. Sau đó sử dụng một seedtext như bạn dự đoán để bắt đầu quá trình sinh văn bản và in kết quả ra sẽ được flag mà ta cần tìm ![](https://hackmd.io/_uploads/B1Tcck5Wa.png) Và kết quả của quá trình generate text là:![](https://hackmd.io/_uploads/rk6kiycba.png) Ta thấy được sau khi generate thì nó có một xâu có dạng giống với format của flag. Flag : W1{unlock}