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

Bài đăng phổ biến từ blog này

KMACTF và nỗi buồn éo làm được gì cả T__T