Khái niệm. Lỗ hổng format string xảy ra khi chuỗi định dạng do người dùng kiểm soát được truyền trực tiếp vào hàm như printf. Đặc tả %n đặc biệt nguy hiểm vì nó ghi số ký tự đã in ra một địa chỉ bộ nhớ (ghi tùy ý). Bài này chỉ phân tích tĩnh chuỗi định dạng để đếm đặc tả, không thực thi.
Quy tắc:
%% là dấu % thoát, không tính là đặc tả.%X (X ≠ %) là một đặc tả; nếu X = n thì là đặc tả ghi %n.In ra: số %n và tổng số đặc tả.
Ví dụ. %x%x%n leak → 1 3 (ba đặc tả %x %x %n, trong đó một %n).
Một dòng: chuỗi định dạng.
Độ dài chuỗi ≤ 10^5.
Một dòng: <số %n> <tổng số đặc tả>.
Ví dụ:
Đầu vào:
%x%x%n leak
Đầu ra:
1 3
Giải thích:
Đang tải editor...