刷题记录:[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

总结

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

最新文章

  1. 第12章 Linux系统管理
  2. Python入门练习
  3. AI (Adobe Illustrator)详细用法(四)
  4. 《DSP using MATLAB》示例Example5.1
  5. realloc,c语言
  6. 微信小程序的网络设置,及网络请求:wx.request(OBJECT)
  7. SSH三大框架的整合
  8. Java基础学习笔记十一 Eclipse开发工具
  9. [物理学与PDEs]第2章习题5 正应力的平均值
  10. web 分享到facebook
  11. node,npm,vue的全局升级
  12. zabbix监控URL
  13. Python_configparser模块
  14. poj 1256 按一定顺序输出全排列(next_permutation)
  15. vue+axios实现移动端图片上传
  16. 【大数据系列】windows搭建hadoop开发环境
  17. unity5 Orthographic模式相机视截体尺寸计算
  18. HNOI2004 宠物收养所 (Treap)
  19. Matlab变量、分支语句和循环语句
  20. CentOS 6.9使用iptables搭建网关服务器(转)

热门文章

  1. 基于web站点的xss攻击
  2. Installation of SAP on RAC with Oracle ASM(转)
  3. Java利用POI实现导入导出Excel表格示例代码
  4. 直播知识-推流&amp;拉流
  5. Xshell6和Xftp6 破解免安装版,无窗口多开限制
  6. 交换机 VLAN 的划分
  7. golang读写文件之Scan和Fprintf
  8. X2E车载数据记录仪
  9. selenium常用的API(四)设置get方法最大加载时间
  10. P1972 [SDOI2009]HH的项链[离线+树状数组/主席树/分块/模拟]