---
# System prepended metadata

title: XXD-Server

---

# XXD-Server
![task](https://hackmd.io/_uploads/Byvnt0-R3.png)

## Recon
Đầu tiên khi vừa mới vào trong challenge ta có thể thấy được
![](https://hackmd.io/_uploads/B1Px9CZAh.png)
Trang web cho chúng ta upload một file lên và khi thử upload một file lên và bấm vào view ta được
![](https://hackmd.io/_uploads/HJwV5C-A3.png)
Đây là các mã hex của một file, kiểm tra mã nguồn được cung cấp thì có thể thấy được rằng
![](https://hackmd.io/_uploads/rkJhqA-A2.png)
Ta có thể thấy được ở đoạn ```foreach(str_split($s, 16) as $v)``` đoạn này có nghĩa là tách chuỗi thành 16 ký tự và thực thi đoạn code vậy thử thách được đặt ra cho chúng ta đó chính là tìm cách để có được một payload có 16 ký tự mà vẫn đọc được file flag.
# Exploit
Mình sử dụng payload như sau để có thể upload được một file chứa 16 ký tự mà vẫn đọc được file flag
```bash=
<?=readfile(/****/'/flag')?>
```
Sau khi upload thì bấm vào để đọc thôi

# Flag
![](https://hackmd.io/_uploads/HJJsiRZA3.png)
