Không còn ám ảnh khi Đăng ký môn học VNU – Phần 1
Đầu tiên mình xin đính chính, đây không phải là bài viết hướng dẫn khai thác, xâm nhập trái phép hệ thống. Mình muốn viết để chia sẻ về kĩ thuật phân tích hệ thống nhằm mục đích trao đổi kiến thức. Đặc biệt sẽ hữu ích đối với những người phát triển ứng dụng web đang quan tâm vấn đề bảo ...
Tuy nhiên thực tế thì không được đơn giản như quy trình vừa rồi, sinh viên chắc chắn sẽ phải được trải qua nhiều cung bậc cảm xúc khác nhau: chết ngất rồi thì tự nhiên sống lại, đang sống thì tự nhiên chết, nói chung là đau tim :)). Chắc chắn người sử dụng sẽ được trải qua những trường hợp phổ biến thế này:
– Hệ thống mở sớm, hoặc muộn hơn thông báo
– Không tải được môn học, không cho phép đăng nhập
– Chọn môn học và bị đứng trang
– Bấm ghi nhận không được
– Sau khi ghi nhận, một lúc sau F5 thấy chưa đăng ký được môn học
Khi gặp phải nhiều trạng thái cảm xúc như vậy đã khiến rất nhiều sinh viên muốn đập máy =((( Đứa nào cũng muốn được đăng ký môn học một cách nhanh gọn, chính xác. Hành trình thực hiện giấc mơ đăng ký môn học trong tích tắc bắt đầu từ đây …
Bài này sẽ chia làm 3 phần: Giới thiệu về hệ thống, Khám phá hệ thống, Chiến thuật khắc phục.
Trước tiên mình xin giới thiệu tổng quan về hệ thống.
Hệ thống đăng ký môn học của ĐHQG được truy cập ở địa chỉ chính là: http://dangkyhoc.vnu.edu.vn/
Sau khi sinh viên đăng nhập tài khoản trường cung cấp.
Nếu sinh viên truy cập vào hệ thống lúc chưa mở đăng ký, có 2 tính huống có thể xảy ra.
– Hiện danh sách các môn học nhưng chưa cho phép chọn môn học
– Không hiện danh sách môn học gì cả
– Không hiện danh sách nhưng có thông báo ( chưa trong thời gian đăng ký môn học)
– Đăng ký các môn bình thường
Tò mò xem các resource hệ thống gửi về client ta nhận được các file js sau:
Mình để ý thấy trước và sau khi mở đăng ký, server đều trả về một số file giống nhau!!! Nghi ngờ quá :)). Mở thử file Registration.js xem sao.
Nhìn kinh quá, có một số file đã được nén minify :3
Download file về và Refactor format code xem nào:
Có vẻ ổn hơn rồi, code khá dễ đọc :))
Có một function DSDK() hình như thao tác POST lên server. Cùng xem tiếp callback trong đó có gì nào.
function errorCallback1 ta thấy có điều nghi ngờ ở đây??? Có biến: $registrationAvailable
Hiện tại đang là 8h sáng, test trên console trình duyệt xem thế nào:
$registrationAvailable = “false” :))
Tự sửa lại thành true xem sao:
$registrationAvailable = true
Hệ thống y nguyên thế ??? Không thể có chuyện sinh ra biến này mà không dùng được. Thử tạo ra các thao tác trên web xem sao. Mình sẽ bấm chuyển môn học sang môn toàn trường.
Ồ trang đã load lại một số nội dung, và hiện ô checkbox chọn được, danh sách môn đăng ký mặc định cũng có thể xóa đi được luôn. Bầu trời như đang mở rộng ngay trước mắt =)) Bây giờ là 8h15 sáng. Mình hiện tại có thể chọn môn, hủy môn như lúc hệ thống mở đăng ký. Trong khi sinh viên khác khi đăng nhập sẽ không thể thao tác được.
Sau khi chọn đủ tín chỉ, và thể dục mình muốn học, mình sẽ bấm gửi. Khoan! Nút ghi nhận của em đâu :(((.
Hệ thống đã mở đâu mà hiện nút ghi nhận chứ :sexy:
Không thể từ bỏ được, mò tiếp nào…
Tiếp tục đọc lại file js ở Registration.js , có một function cần quan tâm ở đây
Hóa ra source html không tồn tại class .confirm-registration đâu cả. Chỉ khi nào đến 9h thì thẻ đó mới xuất hiện Thử tự tạo 1 nút bất kì và chèn class vào source html
Thử tạo 1 nút bất kì và chèn class vào source html
hackme
Bây giờ mình click button “hackme” xem sao
Ồ :)) có request được gửi đi rồi. Thử đọc thông tin response:
Chưa đến giờ đăng ký @@@. Như vậy có thể nói đã HẾT CÁCH đăng ký trước khi mở cửa, vì hệ thống đã check trên server
Bước 1: Trước khi bắt đầu đến giờ đăng ký khoảng 15-20p: vào console kích hoạt biến $registrationAvailable =true
Bước 2: Sửa hoặc tạo 1 button bất kì và đặt tên class là “confim-registration”.
Bước 3: Đổi chế độ sang môn học toàn trường để reload lại data
Bước 4: Thao tác đăng ký chọn môn bình thường
Bước 5: Đợi đến đúng giờ đăng ký thì bấm Button vừa tạo.
Chưa hết
KHOAN!!!
Ồ, hệ thống lại ghi nhận thành công. :)) (Phần này mình xin skip vì khá dài, nếu có thời gian mình sẽ nói chi tiết ở Phần 2, có rất nhiều kĩ thuật để áp dụng thực hiện đăng ký dễ hơn)
TIPS
– Dùng trình duyệt Firefox thay vì Cốc cốc, chrome, nên clear cache, hoặc mở ẩn danh.
– Hệ thống được phân tán trên nhiều IP chứ không chỉ mỗi tên miền http://dangkyhoc.vnu.edu.vn/
Khi lag bạn có thể vào một trong 2 hoặc cả 2 trang sau:
http://dangkyhoc.vnu.edu.vn/
http://112.137.128.121/
– Nên bình tĩnh hành động, cáu không làm được việc :))– Bạn phải thường xuyên truy cập trang http://dangkyhoc.vnu.edu.vn/ để không làm hết hạn session. Chỉ cần mở tab http://dangkyhoc.vnu.edu.vn/ thỉnh thoảng bấm F5.
– Khi ghi nhận thành công đừng vội mừng, phải tiếp tục theo dõi http://dangkyhoc.vnu.edu.vn/xem-va-…
Khi bị mất môn học, lý do nhà trường reset kết quả, bạn phải đăng ký lại từ đầu– Cách đơn giản nhất là nhờ thằng nào UET nó đăng ký hộ cho :))
===
Hôm nay kỉ niệm ngày mua cây đàn đầu tiên về nghịch, cũng là lần public bài đầu tiên trên blog nên viết mình post bài xin view của thiên hạ
Chúc các bạn có một kỳ ĐKMH với cảm xúc hạnh phúc và như ý :))
Cảm ơn các bạn đã bỏ thời gian để đọc bài nhảm này =))
Thân ái :))
Techtalk via tuantmsite