刷題記錄:[DDCTF 2019]homebrew event loop


刷題記錄:[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

總結

購買類的題很有可能是邏輯漏洞或者溢出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM