- vừa được xem lúc

Cách mình "hack" được vào hẹ thống của SMAS để xem điểm.

0 0 124

Người đăng: Nguyen Vu

Theo Viblo Asia

Cách mà mình "hack" được vào hệ thống của SMAS

Thật ra dùng từ hack cũng không đúng lắm, chỉ là một vài trick để lừa hệ thống mà thôi.

1. Cảm hứng

Chuyện là vào tầm giữa học ky I năm 2020. Mình cũng vừa mới thi xong giữa kỳ nên quyết định làm một con bot để theo dõi điểm của mình. Nên mình có ghé vào trang http://smsedu.smas.vn/ để xem có API nào hay hay để giúp mình làm việc đó không.

Khi mình mở Devtools xem phần Networks thì hầu như chẳng có gì đặc biệt cả, để lấy được điểm thì mình phải scrape từ page ra vì server của họ lưu thông tin điểm ở một biến javascript rồi render ra table. Vì scrape cũng mất khá nhiều thời gian nên mình đã chọn từ bỏ ý tưởng này.

2. Tình cờ

Kì thi giữa kỳ cũng qua, kì thì cuối kỳ cũng tới. Lúc này trên nhóm chat mình có thảo luận về một app xem điểm có tên là EduOne. Qua một hồi tìm hiểu thì mình biết được rằng EduOne là một app của SMAS. Vì khá tò mò nên mình đã tải về thử.

Khá bất ngờ khi app có giao diện khá dễ dùng, cùng với những tính năng mà SMAS trên web không hề có. Sau một hòi vọc vạch thì mình quyết định xem thử requests của nó để tìm xem có API nào xịn xò để nghịch không.

Mình sử dụng app HttpCanary để xem phần network của EduOne.

3. Vọc vạch

Sau một hồi nghich thì mình thấy một API mà mình cần tìm. Nó cho mình danh hiệu, học lực và hạnh kiểm của một học sinh.

URL: /api/study/tt58/pupils/xxxxxxxx/academicyears/xxxxxxx/class/xxxxxxx/semesters/1

Để ý phần URL của API thì nó cần pupilsID, academicyearsID và classID.

  • pupilID là số ID của học sinh.
  • academicyearsID là ID của năm học.
  • classID là ID của lớp.
  • semesters là học kỳ.

Lúc này mình nhận ra rằng, nếu muốn xem điểm của một học sinh A, cần phải có, classID và pupilID. Đây là lúc mình đào sâu thêm nữa.

Mình chợt nhận rằng, ở trong app EduOne có phần danh bạ, danh bạ này hiện tất cả thông tin của giáo viễn và học sinh. Mình quyết định xem requests của danh bạ này. BINGO, kết quả trả về tất cả học sinh đều có đi kèm với ID của riêng minh. Vậy là vấn đề về pupilID không cần phải giải quyết nữa.

Tuy thế, khi muốn xem danh bạ của một lớp, cần phải có classID.

Sau một lúc suy nghĩ, mình quyết định lấy classID của lớp mình, sau đó trừ đi một để xem có gì xảy ra không. Thật bất ngờ khi danh bạ của một lớp khác hiện ra. Từ đó mình ngồi mò ra được hết tất cả classID của cả trường. Khá may khi classId không phải là số ngẫu nhiên :v

4. Kết quả

Sau những thông tin có được, mình quyết định host nodejs express server ở Glitch.

Đây là project của mình: Tại đây

Kết thúc

Cảm ơn mọi người đã đọc đến đây. Vì là lần đầu viết bài nên văn khá lủng củng, nếu mình có sai sót gì thì mong mọi người thông cảm và giúp đỡ ạ.

Bình luận

Bài viết tương tự

- vừa được xem lúc

2021, chúng ta cần tối ưu hóa việc tải hình ảnh trên web như nào?

Rất chào các bạn,. Như các bạn đã biết, trong kỉ nguyên công nghệ, song song với sự sinh ra dày đặc của các trang web mới cũng là sự biến mất của những trang web "lạc hậu" hay hoạt động kém hiệu quả.

0 0 43

- vừa được xem lúc

Giải thích một số JAVASCRIPT ARRAY METHOD với EMOJIS

Như chúng ta đã biết, Array trong JS có rất nhiều method tiện dụng có thể hỗ trợ chúng ta. Sau đây là một số method thông dụng được giải thích bằng các emoji. Thêm một hoặc nhiều phần tử vào sau mảng. livestock.

0 0 33

- vừa được xem lúc

Testing trong Javascript với Jest (Phần 1)

Hello 500 anh em, lại là mình đây. Chú bé coder yêu màu tím thích màu hồng và ghét sự giả dối đây .

0 0 249

- vừa được xem lúc

Áp dụng kiến trúc 3 Layer Architecture vào project NodeJS

The problem encountered. Các framework nodejs phổ biết như Express cho phép chúng ta dễ dàng tạo ra Resful API xử lí các request từ phía client một cách nhanh chóng và linh hoạt.

0 0 61

- vừa được xem lúc

Một số String methods cần biết trong javascript

String là một trong những phần quan trọng nhất trong javascript, ngoài những methods hay dùng như trim, concat, subString, toUpperCase, toLowerCase; Javascript còn cung cấp cho chúng ta rất nhiều methods hữu ích khác để thao tác và giải quyết các vấn đề dễ dàng hơn khi làm việc với String. Mặc dù nh

0 0 25

- vừa được xem lúc

Giới thiệu về Mixins trong Vuejs

Xin chào năm mới năm me! Hôm nay mình sẽ tiếp tục chia sẻ cho các bạn những vấn đề liên quan đến Vuejs. Ở bài trước mình đã giới thiệu về tính năng Filter và lần này, mình xin chia sẻ với các bạn về một khái niệm cũng rất quen thuộc.

0 0 376