Tổng số lượt xem trang

Thứ Ba, 26 tháng 8, 2014

HITCON2014 - Game24


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


Không có nhận xét nào:

Đăng nhận xét