# [HTB] LoveTok Writeup ## Giới thiệu Một Challenge ngắn được viết bằng PHP với cực ít tính năng, nên thông thường sẽ là đọc source code chủ yếu. ![](https://hackmd.io/_uploads/SJtgez1Rh.png) Đọc sơ qua source code thì mình có thể thấy những điều sau ## Mục tiêu và đối tượng 1. Mục tiêu 1. Flag là file mà mình cần RCE 2. Đối tượng đáng ngờ 1. Hàm eval ngay trong file TimeController và input chỉ thêm slashes (trên mạng cũng đã có nhiều cách bypass) ## Thực hiện Ta có thể thấy hàm eval nhận từ query format mà chỉ filter bằng cách thêm dấu \ vào các kí tự , đây là nơi có thể giúp ta inject các dòng code system để mình làm mọi thứ mình muốn ![](https://hackmd.io/_uploads/rJm-eM1Rh.png) Với addslashed thì mình có nhiều cách để bypass, sau khi search GG thì mình kiếm được link này [reference]: https://0xalwayslucky.gitbook.io/cybersecstack/web-application-security/php Ở đây ta thấy câu lệnh được nằm trong cặp dấu nháy đôi “” nên ta cần phải inject nhưng dòng code mình muốn bằng ${} và áp dụng na ná link trên Ta có thể craft như sau, dùng một tham số khác để tránh dính vào hai dấu ‘ và “ trong đoạn code có sẵn (bởi vì nếu không lấy từ query 1 thì bỏ whoami vào sẽ dính ‘ và “ như mình đề cập) ``` ?format=${eval(system($_GET[1]))}&1=whoami ``` Gửi request và ta nhận được kết quả ![](https://hackmd.io/_uploads/B1pZgMyR2.png) Vậy là ta có thể thực thi và nhận được kết quả, ta thử xem sơ qua list file thử ``` ?format=${eval(system($_GET[1]))}&1=ls ``` ![](https://hackmd.io/_uploads/BkrzeG1R3.png) Tại folder này ta không thấy bất kì flag nào nên ta sẽ đi ngược ra ngoài xem ![](https://hackmd.io/_uploads/ry0flzkR3.png) Thấy được file flag rồi và cứ thế lụm thoi, kkkk ![](https://hackmd.io/_uploads/B1P7lz10n.png) hehe Vậy là xong Lab rùi