App-Script: Bash — System 1

Mình nghĩ challenge này không cần viết nhưng mà nhận ra nếu không viết ra thì rất dễ quên.

Kiểm tra tại thư mục:

Đây là code của ch11. Nó sẽ chạy lệnh ls /challenge/app-script/ch11/.passwd

Flag nằm ở /challenge/app-script/ch11/.passwd nhưng ta không có quyền truy cập. Ta sẽ tìm cách biến đổi để cho ls trở thành một lệnh nào khác, đơn giản có thể là cat.

Ở đây ta tạo symbolic link (liên kết động) tên là ls liên kết với file /bin/cat.

Kiểm tra thì chỉ có /tmp là tạo được file và thực thi. Vậy thì tạo symlink ở đó thôi ;)

Tạo symlink và add thư mục vào biến môi trường (enviroment variable) $PATH

Câu lệnh tạo symlink: ln -s filename linkname

Nếu muốn biết vị trí của cat nằm ở đâu, dùng: which cat

Add directory vào $PATH có thể bằng cách sau:

PATH=/tmp/abc:$PATH

Với /tmp/abc là địa chỉ của thư mục muốn add vào. Ở trên ta có ví dụ là /tmp/delta

Kiểm tra thì ta đã thành công.

(Nếu bạn không hiểu add vào enviroment variable $PATH làm gì thì đừng lo. Ngay bây giờ mình sẽ giải thích. Khi mà bạn truyền vào tên 1 chương trình trên terminal thì terminal sẽ tự động chạy chương trình đó lên, bạn không cần quan tâm chương trình đó ở đâu để chạy đúng không nào? :D

Ví dụ khi bạn gõ python trong terminal thì nó sẽ tự động chạy ngay python ở terminal luôn. Đó là vì nó sẽ kiểm tra tuần tự từ trái sang phải các địa chỉ thư mục nằm trong biến $PATH, khi tìm được ở chương trình nào đó đầu tiên thì nó sẽ tự động chạy ngay lên thôi. Lúc bạn add /tmp/abc vào $PATH khi chạy lệnh ls nó sẽ tìm ở đây trước, khi đó ta có symlink tên là ls liên kết tới /bin/cat và chạy chương trình cat, và …bùm, flag xuất hiện. )