3kctf
Last updated
Was this helpful?
Last updated
Was this helpful?
ở bài này cơ bản như sau, được phép compiler python or php code, nhưng ta chỉ có thể store php code lol, there have a python compiler but where is the code we can run?
vì run được code php nên mình sẽ check phpinfo đầu tiên
check disable fun, mình thấy cực kỳ nhiều func bị disable.
vì quá nhiều func bị disable nên có thể tác giả ko filter hết được nên mình sẽ thử vận may bằng cách diff.
trong php, func được list ở, get_defined_functions, list ra và diff thôi,
code mình diff như sau, nhận thấy có chữ exec, mình vào doc đọc liền.
ez rce => done.
bài này cũng cho source nên mình sẽ take a look.
server có thể nhận 3 param, ta thấy có exec => blind shell for sure, nhưng làm sao vào đc if này?
điều kiện là
if($key === hash_hmac('sha256', $url, $secret))
$secret thì mình không biết cũng không thể lấy được.
vậy sao có thể pass chỗ này>
nhìn vào hàm fetch_and_parse
$page là thứ mình control
đồng thời sau khi nó list ra cũng tính dùm key cho mình, vậy ta có thể fake key ở chỗ này.
bước exploit như sau:
1, host 1 file html trên github của mình với content
2, send biến param như sau
sử dụng ../ để path travel nhằm bắt server request vào repo của mình.
3. lấy key + url và rce.
rce => solve
bài này mình sẽ phải đi tìm imposter
mình nhìn sơ vào source thì thấy, tất cả những chỗ truy vấn db đều được sử dụng blind param => no sqli anymore
ứng dụng có chức năng reg,login, post note, đồng thời mình thấy ở main.js
is that csp?
có csp nhiều khả năng sẽ là xss.
còn file req.php không được cho source , mình thử access trên url thì thấy đây là một page submit cho bot
vậy chắc chắn là xss rồi, nhưng nhìn vào đống csp thì không hề có một hope nào
bonus
how can i xss with csp and htmlsepecialchars????
is that posible?
tạm gác qua những câu hỏi, mình thử dạo một vòng trên ứng dụng
đầu tiên reg và login sẽ thấy 1 trang để lưu note
thử tạo 1 note xem
nó sẽ cho mình 1 cái token để deserialize đồng thời thực hiện truy vấn vào db.
như ta thấy content của mình đã bị html endcode
nhưng nhìn vào main.js, nó được load bởi đường dẫn tương đối...
let try
main.js not found?
/view//posts.php
mình request như thế này, lúc request tới main.js thì nó chỉ path travel ra 1, nên request load main.js trở thành /view/js/main.js
vậy, no-more csp here lol
=>bypass csp, done
tiếp theo bypass html encode, simple , nhìn vào post.php nơi xử lý token
logic đoạn này đơn giản như sau, nếu đã login đồng thời unserizli token và gọi get_post(), nếu có vấn đề gì trong lúc unserialize và call get-post() thì sẽ nhảy vào catch chỉ unserialize thôi....
do you know how to trigger xss here?
với token là
trigger đc xss thì simple, flag ở trong cookie chỉ cần fetch là được, tới đây mình xin dừng vì xss mình làm rất nhiều ở những wu trước.
#ps: ctf is fun