---
title: Tutorial SageMath
tags: [crypto, SageMath, writeup]
---
# Cài Đặt & Sử Dụng SageMath
## Trên Linux
Trước tiên bạn có thể tạo 1 thư mục `sagemath` trên `Desktop` hoặc bất kỳ đâu tùy bạn thích.
### Bước 1: Cài đặt Miniforge (trình quản lý môi trường `conda`)
#### Tải Miniforge cho hệ thống 64-bit
```
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
```
Với uname và uname -m trên máy Linux của bạn. Ví dụ như của mình:

Thì ta sẽ có lệnh như sau:
```bash
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
```
#### Chạy trình cài đặt
Sau khi tải Miniforge3 thành công, ta sẽ được 1 file .sh. Tiếp tục chạy trình cài đặt:
```bash
bash Miniforge3-Linux-x86_64.sh
```

Khi được hỏi `Do you accept the license...`, chọn `yes`.

Sau khi cài xong, **đóng terminal và mở lại**, hoặc chạy thủ công:
```bash
source ~/.zshrc # nếu dùng Zsh
source ~/.bashrc # nếu dùng Bash
```
Kết quả thành công, khi bạn gõ conda sẽ hiển thị như trong ảnh

### Bước 2: Tạo môi trường riêng cho SageMath
```bash
conda create -n sage sage python=3.11
```

Trong quá trình tạo, các bạn cứ tiếp tục chọn yes nhé

Sau khi tạo xong, tiến hành activate sage
```bash
conda activate sage
```

Tới đây thì môi trường ảo `Conda` đã được kích hoạt
> ? Vậy "sage" trong dòng đó có nghĩa là gì?
> Trong môi trường này, bạn đã cài sage. Nên từ đây bạn có thể chạy lệnh sage để khởi động chương trình SageMath.
### Bước 3: Chạy SageMath
#### Dùng dòng lệnh:
```bash
sage
```
#### Hoặc mở giao diện Jupyter Notebook:
```bash
sage -n
```
Một đường link local sẽ hiện ra trong cmd, ví dụ:

```
http://localhost:8888/tree?token=...
```
→ Mở link này trong trình duyệt để sử dụng SageMath qua Jupyter.

### Gợi ý (tuỳ chọn)
Nếu muốn **tự động kích hoạt** môi trường Sage mỗi khi mở terminal, thêm dòng sau vào cuối `~/.zshrc` hoặc `~/.bashrc`:
```bash
conda activate sage
```
## Trên Windows
Trên windows đơn giản ta sẽ thêm 1 bước trước khi cài `conda` thôi
### Bước 1: Mở PowerShell với quyền Administrator
1. Nhấn **Windows**
2. Gõ `powershell` hoặc `cmd`
3. Chuột phải → chọn **"Run as Administrator"**
### Bước 2: Cài đặt WSL (nếu chưa có)
```powershell
wsl --install
```
Quá trình này sẽ tự động cài đặt WSL và Ubuntu mặc định.
Nếu được yêu cầu, **hãy khởi động lại máy tính** để hoàn tất cài đặt.
### Bước 3: Kiểm tra WSL đã cài chưa
```powershell
wsl --version
```
Nếu thấy phiên bản như `WSL version: 2.0.x`, bạn đã cài thành công.
### Bước 4: Xem danh sách bản phân phối Linux có thể cài
```powershell
wsl --list --online
```
Danh sách sẽ hiển thị các distro như: Ubuntu-20.04, Ubuntu-22.04, Ubuntu-24.04...

### Bước 5: Cài Ubuntu 24.04
```powershell
wsl --install -d Ubuntu-24.04
```
Quá trình này sẽ tải và cài Ubuntu 24.04 trên nền WSL.
**Ở đây có 1 lưu ý đó là khi gặp lỗi:**
> The operation could not be started because a required feature is not installed.
> Error code: Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_SERVICE_NOT_AVAILABLE
Thì nguyên nhân là do hệ thống của bạn đang **thiếu một số thành phần cần thiết để chạy WSL2** (đặc biệt là Hyper-V hoặc Virtual Machine Platform) hoặc các dịch vụ liên quan chưa hoạt động.
**Cách khắc phục**
Đảm bảo các tính năng WSL liên quan đã bật:
Mở PowerShell với quyền Administrator, lần lượt chạy lệnh:
```
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```
Sau đó khởi động lại máy và cài đặt lại
`wsl --install -d <version your choice>`
Sau khi cài xong, Ubuntu sẽ tự mở. Bạn cần nhập:
- **Username** (ví dụ: `minhduc`)
- **Password** (nhập 2 lần để xác nhận)
Ở đây các bạn có thể sẽ xuất hiện thêm 1 lỗi về Network nữa (đã xảy ra với mình) đó là
> - Kết nối Internet chậm hoặc không ổn định
> - Windows đang tải từ server chậm hoặc bị gián đoạn
> - Tường lửa hoặc phần mềm diệt virus chặn
> - DNS trục trặc khiến việc phân giải domain tải về bị chậm hoặc không thực hiện được.
Thì các bạn thử Chuyển DNS sang Google:
1. Vào Control Panel > Network and Internet > Network and Sharing Center
2. Click Change adapter settings
3. Chuột phải vào kết nối đang dùng → Properties
4. Chọn Internet Protocol Version 4 (TCP/IPv4) → Properties
5. Chọn Use the following DNS server addresses và nhập:
```
Preferred: 8.8.8.8
Alternate: 8.8.4.4
```

Sau đó nhấn OK và tải lại
### Bước 6: Mở lại Ubuntu sau này
#### Cách 1: từ CMD/Powershell:
```powershell
wsl -d Ubuntu-24.04
```
#### Cách 2: từ menu Start:
Nhấn **Windows** → gõ `Ubuntu 24.04` → Enter
### Một số lệnh quản lý WSL hữu ích
| Lệnh | Mục đích |
|------|----------|
| `wsl --list --verbose` | Xem các distro đã cài & trạng thái |
| `wsl --set-default Ubuntu-24.04` | Đặt Ubuntu 24.04 làm mặc định |
| `wsl --shutdown` | Tắt toàn bộ WSL, giải phóng RAM |
### Gợi ý sau khi vào Ubuntu lần đầu
Chạy lệnh cập nhật và cài đặt công cụ cơ bản:
```bash
sudo apt update && sudo apt upgrade
sudo apt install git curl python3 python3-pip
```
Sau khi có môi trường Linux trên Windows thì các bạn tiến hành cài đặt như [các bước ở trên Linux](https://hackmd.io/@m1nhd4cc/HJRxEjFPgx#Tr%C3%AAn-Linux)
# Kiểm Tra SageMath
Sau khi cài đặt và chạy thành công, mình sẽ kiểm tra SageMath bằng 2 challenge CTF
Ở đây mình sẽ mượn tạm 2 challenge Crypto của giải [HCMUS-CTF 2025](https://hackmd.io/@YaipbyxZRByK2Qi9Le0t4A/Sk_8Z6c8xx)
Các bạn chỉ cần copy Solution của Author và paste vào chương trình với tên file .py là được. Ở đây mình đặt exploit.py

Chạy và exploit thành công! Get được flag
# Lời kết & Ref
SageMath không chỉ là một công cụ mạnh mẽ để hỗ trợ giải các bài toán đại số, hình học và mật mã — mà còn là một người bạn đồng hành đắc lực cho dân chơi CTF, sinh viên ngành khoa học máy tính, và bất kỳ ai đam mê toán học
Ref:
https://doc.sagemath.org/html/en/installation/index.html#windows