Rootme - WriteUp - Web Client ( 1 - 8 )

Rootme - WriteUp - Web Client ( 1 - 8 )

Đây là writeup của các bài CTF mảng Web - Client trên Rootme

Bài 1. HTML - disabled buttons

Bài này mở màn là thấy 2 phần bị disable thì như tên bài, ta chỉ cần chỏ vào đó và xoá trường "disable" đi và submit là ta đã có flag của bài này.

BAI1.png

Flag: HTMLCantStopYou

Bài 2. Javascript - Authentication

Bài này thì chúng ta chỉ cần mở Dev tool lên và check src thấy có hàm main js, ta có thể thấy logic chương trình khá đơn giản.

b2.png

Flag: sh.org

Bài 3. Javascript - Source

Lại một bài nữa chúng ta chỉ cần check src code bằng Dev tool và có Flag

b3.PNG

Flag: 123456azerty

Bài 4. Javascript - Authentication 2

Bài này cũng chỉ yêu cầu đọc hiểu code cơ bản, mở F12 lên và chỉ cần quan tâm đoạn khoanh đỏ như hình dưới và ta đã có Flag của bài này.

b4.PNG

Flag: HIDDEN

Bài 5. Javascript - Obfuscation 1

Khái niệm Obfuscation: Đây là kỹ thuật để convert từ 1 đoạn code dễ hiểu về mặt logic, view thành 1 đoạn code khó đọc, khó reverse bằng cách thêm vào hoặc sửa đổi tên hàm tên biến thành những ký tự khó hiểu cho cả người và máy.

Tại sao phải obfuscate code Javascript ? Do javascript là một ngôn ngữ thông dịch và Js cần một thông dịch viên để có thể biên dịch và execute (thông dịch viên ở đây chính là Browser của chúng ta). Chính vì vậy nên người dùng có khả năng đọc code -> lộ logic, lộ các thông tin nhạy cảm có trong code của chúng ta -> nhiều khi người dùng sẽ có ý đồ xấu gây hại cho chương trình.

b5.PNG

Đọc đoạn code trên logic cũng không khó hiểu lắm, cái ta cần quan tâm chính là biến pass thay vì ghi bản rõ thì có vẻ người lập trình viên đã ghi bằng bản mã. Ta chỉ cần

console.log(unescape(pass)) và ta đã có flag.

Flag: cpasbiendurpassword

Bài 6. Javascript - Obfuscation 2

Bài này mở F12 lên và ta thấy có 1 đoạn script trong file html

b6_1.PNG

Giờ ta hãy dùng hàm decodeURIComponent() của Javascript để decode cái này xem ta sẽ thu được gì

b6_2.PNG

Đây là kết quả khi chạy hàm trên và in ra console của trình duyệt. Giờ chúng ta chỉ cần thực thi câu lệnh String.fromCharCode(104,68,117,102,106,100,107,105,49,53,54) mà chúng ta thu được sau khi decode ở trên và ta sẽ có được Flag.

Flag: hDufjdki156

Bài 7. Javascript - Native code

Ở bài này khi ta F12 lên thì sẽ thấy 1 đoạn script khá rắc rối và không thể hiểu nổi, đây thực chất vẫn là Obfuscation.

b7_1.PNG

Ta sẽ decode đoạn mã này và sau đó ta thu được 1 function như sau

b7_2.PNG

Logic khá dễ hiểu nên ta sẽ có luôn Flag của bài này.

Flag: toto123lol

Bài 8. Web-pack.

Khái niệm: Webpack là module bundle, mục đích của nó là để đóng gói các tệp Javascript để sử dụng trong trình duyệt, điều này sẽ làm code trở nên nhẹ hơn, bảo mật code tốt hơn,...

Tuy nhiên bài này khá dễ, ta chỉ cần F12 lên và tìm Flag thôi

b8.PNG

Flag: BecauseSourceMapsAreGreatForDebuggingButNotForProduction

Oke mình xin tạm nghỉ hẹn các bạn ở các bài tiếp theo nhé