# Forensic ## 1. Dimension - Từ đề bài chúng ta có thể thấy được hint cũng như hướng làm của bài này. - Đề bài cho ta một file ảnh khi mở ra bị lỗi. Nếu mở ra trong hex chúng ta có thể thấy cả chiều ngang lẫn chiều dọc của bức ảnh đã được đưa hết về 0. ![](https://hackmd.io/_uploads/SJEByAc92.png) - Chính sửa lại chiều dài và độ rộng bức ảnh phù hợp, chúng ta sẽ được flag. ![](https://hackmd.io/_uploads/HkZJlRcq3.png) # Web ## 1. Head 1 ```php! <?php if (strpos($_SERVER['REQUEST_URI'], '_')) { die("no no no"); } if (isset($_GET['input_data'])) { $output = shell_exec("curl --head " . $_POST['input_data']); echo $output; } show_source(__FILE__); ``` - Đề bài đã cho chúng ta source code ngay trên trang web - Chương trình đầu tiên sẽ check xem liệu trong request của chúng ta có tồn tại dấu ```_``` không, nếu có sẽ trả về ```no no no```. Khá là khó chịu vì param ```input_data``` có chứa 1 dấu gạch chân đó, nhưng chúng ta có thể encode đưa về ```%5F``` có thể giúp ta bypass qua filter này - Tiếp theo chương trình lấy dữ liệu từ ```input_data``` thông qua method GET, thế nhưng lại thực thi câu lệnh với dữ liệu lấy từ POST? Khá là lạ chỗ này. - Sử dụng Burp ta có thể chỉnh sửa lại request và gửi lên server. ![](https://hackmd.io/_uploads/rJhI405c2.png) ![](https://hackmd.io/_uploads/ryTv4R9c3.png) ![](https://hackmd.io/_uploads/BJU_EAq5n.png) - Giờ chúng ta chỉ cần cat flag ra. ![](https://hackmd.io/_uploads/Sy73ERqc2.png) ![](https://hackmd.io/_uploads/ry7aERqcn.png) ## 2. Head 2 ```php! <?php if (isset($_GET['input_data'])) { $output = shell_exec("curl --head " . $_GET['input_data']); // echo $output; } show_source(__FILE__); ``` - Bài này đơn giản hơn, không có filter nhưng cũng không có output -> webhook. - Chall này không có file flag, mà biến flag được lưu vào trong environment, nằm tại đường dẫn ```/proc/self/environ``` ![](https://hackmd.io/_uploads/HyVe8Rq5h.png) ![](https://hackmd.io/_uploads/Hyeb805ch.png) ![](https://hackmd.io/_uploads/HJLG8R9c3.png)