Bài đăng

Đang hiển thị bài đăng từ Tháng 5, 2018

[VNPT SecAthon 2018] Modulus

Hình ảnh
Đề bài cho ta mã nguồn thuật toán mã hóa sau Để giải quyết bài toán này mình sử dụng kiến thức về nhân ma trận tương tự trong việc thám mã Hill. Ta quy ước các chuỗi encryptionKey và flag có dạng sau Thuật toán sẽ mã hóa từng kí tự p trong chuỗi flag để tạo chuỗi encrypted theo công thức (K là ma trận có kích thước 2 x 2) Vậy chỉ cần tính được nghịch đảo của ma trận K là ta có thể tìm được flag từ chuỗi encrypted Do chuỗi encrypted được cho sẵn và flag có dạng SECATHON{...} nên ta có thể tính được nghịch đảo của K và tìm ra flag. Chú ý các phép toán trên ma trận đều theo modulo 251. Flag => SECATHON{crypto_is_very_simple_if_you_know}

[VNPT SecAthon 2018] sql33t

Hình ảnh
Đi thi CTF được gần 3 năm rồi mới được giải nhất 1 lần (mặc dù biết rất nhiều đội mạnh không tham gia). Đáng lẽ ra đây là 1 chuyện đáng mừng nếu như đội mình - "đội J nào đó" không được gọi hồn lên. Sau đây mình xin trình bày cách giải của mình về 2 bài web sql33t_1 và sql33t_2.  Đề bài cho ta 2 trang web http://172.16.120.5:8081/ và http://172.16.120.5:8082/.  2 trang này cơ bản giống nhau về phần giao diện và các chức năng.  Đầu tiên thay vì chờ hint từ BTC thì mình xem html source của trang web, tìm được đường dẫn /pyc . Sau khi tải về về dùng Easy Python Decompiler để lấy source code.  (Việc này cũng tương đương với việc  pwn server của BTC để lấy source code về). Mã nguồn sql33t_1 Mã nguồn sql33t_2 Nghiên cứu source code ta thấy được mục tiêu của ta là để 2 câu truy vấn SQL trong code trả về kết quả là realJEDI thì flag sẽ được xuất ra. Challenge sql33t_1 Ở thử thách này có 2 tham số ta có thể inject được vào là username và sid