首页 > 其他 > 详细

刷题记录:[DDCTF 2019]homebrew event loop

时间:2019-10-15 23:00:05      阅读:180      评论:0      收藏:0      [点我收藏+]

刷题记录:[DDCTF 2019]homebrew event loop

题目复现链接:https://buuoj.cn/challenges
参考链接:DDCTF2019-WRITEUP

知识点

1、逻辑漏洞

def trigger_event(event):
    session['log'].append(event)
    if len(session['log']) > 5:
        session['log'] = session['log'][-5:]
    if type(event) == type([]):
        request.event_queue += event
    else:
        request.event_queue.append(event)

首先路由异步处理请求,使用了一个队列

def buy_handler(args):
    num_items = int(args[0])
    if num_items <= 0:
        return 'invalid number({}) of diamonds to buy<br />'.format(args[0])
    session['num_items'] += num_items
    trigger_event(['func:consume_point;{}'.format(num_items), 'action:view;index'])

主要的问题是这里的购买函数是改变余额再判断是否合法,也就是说在调用buy_handler时同时传入get_flag,处理队列中的顺序就是余额+n -> get_flag -> 判断不合法,这时我们已经成功把flag写进session了。

2、flask session解密

flask-session-cookie-manager

总结

购买类的题很有可能是逻辑漏洞或者溢出

刷题记录:[DDCTF 2019]homebrew event loop

原文:https://www.cnblogs.com/20175211lyz/p/11681737.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!