刷题记录:[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的更多相关文章

  1. [DDCTF 2019]homebrew event loop

    0x00 知识点 逻辑漏洞: 异步处理导致可以先调用增加钻石,再调用计算价钱的.也就是先货后款. eval函数存在注入,可以通过#注释,我们可以传入路由action:eval#;arg1#arg2#a ...

  2. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  3. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  4. 刷题记录:[CISCN 2019 初赛]Love Math

    目录 刷题记录:[CISCN 2019 初赛]Love Math 思路一 思路二 总结 刷题记录:[CISCN 2019 初赛]Love Math 题目复现链接:https://buuoj.cn/ch ...

  5. 刷题记录:[ByteCTF 2019]EZCMS

    目录 刷题记录:[ByteCTF 2019]EZCMS 一.知识点 1.源码泄露 2.MD5长度扩展攻击 3.php://filter绕过正则实现phar反序列化 刷题记录:[ByteCTF 2019 ...

  6. 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP)

    目录 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP) 一.涉及知识点 1.无数字字母shell 2.利用.htaccess上传文件 3.绕过open_basedir/disable ...

  7. 刷题记录:[ASIS 2019]Unicorn shop

    目录 刷题记录:[ASIS 2019]Unicorn shop 一.涉及知识点 1.Unicode安全问题 刷题记录:[ASIS 2019]Unicorn shop 题目复现链接:https://bu ...

  8. 刷题记录:[SUCTF 2019]Pythonginx

    目录 刷题记录:[SUCTF 2019]Pythonginx 一.涉及知识点 1. CVE-2019-9636:urlsplit不处理NFKC标准化 2.Nginx重要文件位置 二.解题方法 刷题记录 ...

  9. 刷题记录:[SUCTF 2019]CheckIn

    目录 刷题记录:[SUCTF 2019]CheckIn 一.涉及知识点 1.利用.user.ini上传\隐藏后门 2.绕过exif_imagetype()的奇技淫巧 二.解题方法 刷题记录:[SUCT ...

随机推荐

  1. 如何创建SAP Cloud Platform Process Integration runtime服务

    登录SAP Cloud Platform cockpit,进入subaccount的Service marketplace界面,选择process integration runtime: 点击ins ...

  2. MySQL 5.7开始支持JSON,那还有必要使用MongoDB存JSON吗?请列出你的观点/理由。

    一.观点A:支持MySQL存储JSON MongoDB不支持事务,而MySQL支持事务 MySQL相对MongoDB而言,MySQL的稳定性要优于MongoDB MySQL支持多种存储引擎 二.观点B ...

  3. MYSQL5.7生成列简介及创建

    1.说明 生成列是由已存在的字段通过表达式计算得来的 2.生成列类型 VIRTUAL,即虚拟类型,字段值不实际存储,当读取行时再计算,虚拟列类型不占存储 STORED,即存储类型,字段值会实际存储起来 ...

  4. Oracle数据库入门到高薪培训教程(从Oracle 11g 到 Oracle 19c)

    一.Oracle数据库入门到高薪培训视频教程(从 Oracle11g 到 Oracle19c) 本套Oracle视频教程学习地址: https://edu.51cto.com/course/18034 ...

  5. H3C 40MHz频宽模式

  6. 云计算与大数据实验:Hbase shell操作成绩表

    [实验目的] 1)了解hbase服务 2)学会hbase shell命令操作成绩表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...

  7. jar - 操作jar包的工具

    jar - Manipulates Java Archive (JAR) files. jar命令是一种通用的存档和压缩工具,基于ZIP和ZLIB压缩格式. 常用格式: * 创建jar文件 jar c ...

  8. fastJSON的常用方法总结

    fastJSON的常用方法总结 fastJSON中常用的对象是JSON,JSONArray,JSONObject三个对象.常用的方法如对象转为JSON字符串,JSON字符串转为对象,JSON字符串转为 ...

  9. Docker万字详解!

    一.简介   1.了解Docker的前生LXC LXC为Linux Container的简写.可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C+ ...

  10. Python应用之-修改通讯录

    #-*- coding:utf-8 -*- import sqlite3 #打开本地数据库用于存储用户信息 conn = sqlite3.connect('mysql_person.db') #在该数 ...