BuuCTF và PhP là những niềm đau :D
Mình được cho đề bài như thế này, nói là đề bài chứ thực ra không có gì cả :)))
OK, Let's gooooooo!!! Mình được cung cấp source như sau
Hãy làm một bài phân tích trước nhỉ :D
Đầu tiên, nó sẽ tạo 1 dir lưu file index.php. Nhận tham số từ biến action nếu là `pwn` thì in ra vị trí thư mục. Vd như sandbox/abcxyz/. Nếu là `upload` thì nó sẽ ghi nội dung thông qua biến data và ghi vào file index.php.
Có 1 waf để kiểm tra input của chúng ta
gadget, rce bằng php
Trong hàm waf có 1 hàm check, nếu data của chúng ta vi phạm cái đoạn regex kia thì sẽ in ra hacker!!!
còn không thì pass và rce được :/
Ở đây việc bypass không khó, tui sẽ chia ra làm 2 cách, do dấu ; bị bonk nên chỉ thực hiện được từng lệnh :/
Solution 1: Do php đã bị bonk, chúng ta có thể dùng cách viết ngắn gọn của php là:<?= ?>
để thực hiện. Việc backtick không bị bonk khiến chúng ta dễ dàng trong việc tấn công.payload: <?= `ls -la /*`?>
nhưng dấu cách đã bị lọc có thể thay thế bằng cách kí tự khoảng trắng khác như \t,...
payload: <?=`ls\t-la\t/*`?>
Cách thứ hai là cách thân thiện hơn:
dấu ngoặc đơn không bị filter, ta có thể sài hàm system. Với việc chỉ có dấu nháy đơn bị filter ta sẽ mượn dấu nháy kép để tạo payload
<?=system("ls")?>
Cuối cùng là đọc flag thôi :/ Đơn giản đúng không T_T
Nhận xét
Đăng nhận xét