Shang
Blog 👨‍💻
  • 🌸Introduction
  • 💻WEB SECURITY
    • Research Vulnerability
      • 📲Server-side topics
        • 🔏API Testing
        • 🔏Race conditions
        • 🔏XML external entity (XXE) injection
        • 🔏Server-side request forgery (SSRF)
        • 🔏File upload vulnerabilities
        • 🔏Access control vulnerabilities and privilege escalation
        • 🔏Business logic vulnerabilities
        • 🔏OS Command injection
        • 🔏Directory traversal
        • 🔏Authentication vulnerabilities
        • 🔏SQL injection
      • 📱Client-side topics
        • 🔏DOM-based vulnerabilities
        • 🔏Cross-origin resource sharing (CORS)
        • 🔏WebSockets
        • 🔏Clickjacking (UI redressing)
        • 🔏Cross-site request forgery (CSRF)
        • 🔏Cross-site scripting(XSS)
      • 🌀Advanced topics
        • 🔐Web cache poisoning
        • 🔐HTTP request smuggling
        • 🔐Prototype pollution
        • 🔐Server-side template injection(SSTI)
        • 🔐Insucure deserialization
    • Learn Java Vulnerability
      • Intro & Setup
      • Java Reflection Part 1
      • Java Reflection Part 2
    • Research Documents
      • 🎯DNS Rebinding
      • 🍪Remote Code Execution - Insecure Deserialization
      • 🍪Remote Code Execution on Jinja - SSTI Lab
      • 🍪Exploit cross-site request forgery (CSRF) - Lab
      • 🍪Exploit a misconfigured CORS - Lab
      • 🍪Same Origin Policy (SOP) - Lab
  • 📝WRITE-UP CTF
    • CTF Competitions
      • 🔰[WolvCTF 2023] Writeup Web
      • 🔰[M☆CTF Training 2023] Writeup Web
      • 🔰[HackTM CTF 2023] Writeup Web
      • 🔰[Incognito 4.0 2023] Writeup Web
      • 🔰[LA CTF 2023] Re-writeup Web
      • 🔰[Dice CTF 2023] Writeup Web
      • 🔰[ByteBandits CTF 2023] Writeup Web
      • 🔰[Knight CTF 2023] Writeup Web
      • 🔰[Sekai CTF 2022] Writeup Web
      • 🔰[WRECK CTF 2022] Writeup Web
      • 🔰[Maple CTF 2022] Writeup Web
    • CTF WarGame
      • ✏️[Root me] Writeup Sever Side
      • ✏️Websec.fr
      • ✏️[Root me] Writeup XSS Challenge
    • [tsug0d]-MAWC
      • 💉TSULOTT
      • 💉IQTEST
      • 🧬TooManyCrypto
      • 🧬NumberMakeup
    • Pwnable.vn
Powered by GitBook
On this page
  • Overview
  • Exploit
  1. WRITE-UP CTF
  2. [tsug0d]-MAWC

NumberMakeup

Medium

PreviousTooManyCryptoNextPwnable.vn

Last updated 2 years ago

Overview

Đánh giá qua bài này thì yêu cầu chính làm sao để chèn được code JS vào đây hay có thể nói là khác thác được XSS ở trang này.

Nhìn qua thì có chỗ product ở đây chúng ta có thể điền các số bất kỳ và chọn các style CSS mà mình muốn trang.

Chú ý rằng 123 của chúng ta nằm ở trong lệnh document.write

document.write() là một phương thức của đối tượng document trong JavaScript, được sử dụng để viết nội dung vào tài liệu HTML hiện tại.

Phương thức này cho phép thêm nội dung vào trong trang web một cách động, trong quá trình tải hoặc sau khi tải trang. Khi được gọi, document.write() sẽ thêm nội dung được cung cấp vào vị trí mà phương thức được gọi, và thay thế hoặc xóa bỏ nội dung hiện tại nếu có.

Thêm một điều nữa là trang này chỉ cho điền chữ số và một vài ký tự, không cho điền chữ nếu có chữ cái thì sẽ bị block ngay.

Exploit

Ở đây chúng ta sẽ dùng một cách nào đó để có thể exploit được code JS trong này, như đã nói ở trên thì document.write() nó chỉ thêm văn bản, khi đó cần phải gọi một hàm nào đó để có thể Eval code JS

Sau một lúc research thì mình tìm được đoạn code: globalEval().

Trong JavaScript, $ là cách để gọi một hàm nằm trong một mảng hoặc đối tượng. Khi đó chúng sẽ sẽ Eval code như sau:

$['globalEval']('alert(1)') -> exploit thành công, mình sẽ giải thích tại sao nó lại hoạt động:

Trong đoạn mã $['globalEval']('alert(1)'), chúng ta sử dụng ký hiệu [] để truy cập vào phương thức globalEval của đối tượng window (hoặc global nếu đang sử dụng Node.js), tương đương với việc ghi window.globalEval('alert(1)'). Sau đó, chúng ta truyền chuỗi mã JavaScript "alert(1)" vào phương thức globalEval để thực thi mã đó trong phạm vi toàn cục

Bây giờ bypass thì sẽ chuyển globalEval và alert(1) thành Octal. Thêm '|| ở đầu và cuối chuối payload nhằm mục đích đóng chuỗi '' và yêu cầu nó write chuỗi trống '' hoặc đoạn code trên.

'||$'\147\154\157\142\141\154\105\166\141\154'||' -> payload

Done

📝
🧬