Game 24 –
Writeup – Phiêu Lãng
Khi connect game
bằng nc 210.65.89.59 2424 thì ta nhận được 4 số nguyên
dương.
Chúng ta phải
sử dụng chính xác 4 số đó với các kí tự match
[-+*/0-9()]+ để thỏa điều kiện: abs(eval(answer)) – 24 <=
1e-15
ĐIều đầu
tiên nghĩ tới là sử dụng các phép + - * / để tạo ra
các đáp án thỏa điều kiện.
Trên mạng có
source game 24 nhưng mà không để ý nên mình ngồi code từ
tối tới đêm ra được 1 file game24.py
Source sử dụng
socket send và rev data với server game 24. Khi lấy được 4
số nguyên từ server mình sử dụng các phép tính và dấu
( ) tạo ra tất cả các trường hợp sau đó tính toán
sao cho thỏa điều kiện abs(eval(answer)) – 24 <= 1e-15
thì send lại tới server. Lưu ý: câu trả lời không chứa
khoảng trắng và cuối câu trả lời phải có kí tự
xuống dòng (Bật wireshark bắt mới biết cái này
)
Code xong chạy….
1… 2… 3… 4… Có vẻ khả quan… 5.. 6… 15… 16…
ERROR!!! abs(eval(answer)) – 24 >= 1e-15
Lấy máy tính
casio ra tính các kiểu không thể nào thỏa điều kiện
Chạy lại xem
sao… câu 16 lại ERROR!!! Thôi tạch mẹ rồi… Chắc code
sai Lên IRC coi thì hint
là dường như bạn đang chơi game khác :v Quoác… Game khác
là game nào
Đêm rồi ngủ…
Sáng dậy cái bay ngay vào nghiên cứu tiếp… Sau khi thử
các trường hợp khác trên python thì phát hiện ra còn
trường hợp ** là pow và // nữa
Sửa code chạy
tiếp…
1… 2… 3…
24… ERROR!!! Đệch lại tạch nữa sao
Check code lại
thì thấy thiếu trường hợp dấu - ở đầu câu trả
lời…
Sửa tiếp…
Run again…
Yeah!!! Flag is
….
Submit lên hạng
thôi :D