查看源代碼,發現<!-- you are not admin -->
提示要以管理員身份登陸
嘗試注冊管理員賬號,提示The username has been registered
於是嘗試隨便注冊一個賬號,發現注冊成功,並能夠登陸
根據頁面提示,猜測是通過更改admin賬號的密碼獲取flag
於是進入change password界面,讀取源碼
發現提示<!-- https://github.com/woadsl1234/hctf_flask/ -->
進入之后是這個網頁的源碼,通過觀察發現代碼中重新定義並使用了strlow函數
並且運用了nodeprep.prepare函數
百度之后發現這個函數存在unicode欺騙漏洞,會將ᴬ轉換成A,再將A轉換成a
於是注冊ᴬdmin賬號,進行登陸並改密碼,就獲取了管理員密碼
最后登陸得到flag
flag{d4dcfaad-eaca-4976-a9a7-e79c69f21c74}
注:此題還有其他解法,一題多解,參考
https://www.jianshu.com/p/f92311564ad0
https://www.anquanke.com/post/id/164086