考点
- flask session伪造
- unicode欺骗
- 条件竞争
法一:flask session伪造
查看源码,提示you are not admin,猜测需要admin登录
注册登录,网站功能页面很多,依次查看源码,在change password界面发现源码
是一个flask框架,进入routes.py,看一下注册和登录部分的源码
@app.route('/register', methods = ['GET', 'POST'])
def register():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = RegisterForm()
if request.method == 'POST':
name = strlower(form.username.data)
if session.get('image').lower() != form.verify_code.data.lower():
flash('Wrong verify code.')
return render_template('register.html', title = 'register', form=form)
if User.query.filter_by(username = name).first():
flash('The username has been registered')
return redirect(url_for('register'))
user = User(username=name)
user.set_password(form.password.data)
db.session.add(user)
db.session.commit()
flash('register successful')
return redirect(url_for('login'))
return render_template('register.html', title = 'register', form = form)
@app.route('/login', methods = ['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if request.method == 'POST':
name = strlower(form.username.data)
session['name'] = name
user = User.query.filter_by(username=name).first()
if user is None or not user.check_password(form.password.data):
flash('Invalid username or password')
return redirect(url_for('login'))
login_user(user, remember=form.remember_me.</

本文介绍了三种攻击方法,包括利用Flask Session的签名漏洞伪造admin session,通过Unicode欺骗绕过权限检查,以及利用条件竞争漏洞进行会话劫持。详细分析了源码并提供了利用脚本,揭示了Web应用中潜在的安全风险。
最低0.47元/天 解锁文章
1426

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



