3kctf

ở 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
Last updated
Was this helpful?