BUUCTF [FBCTF2019] Products Manager

2023-11-13

BUUCTF [FBCTF2019] Products Manager

考点:

  1. 基于约束的SQL攻击
  2. 数据库字符串比较
  3. INSERT截断

启动环境:
在这里插入图片描述
产品管理,其中有三个功能:

  • 查看前5的产品
    在这里插入图片描述
  • 添加产品
    在这里插入图片描述
  • 查看产品细节
    在这里插入图片描述
    知道了大致功能,尝试正常的业务逻辑,首先添加产品,其Secret值需包含10位以上的大小写字母数字
    在这里插入图片描述
    添加成功,查询产品细节:
    在这里插入图片描述

分析题目给出的源码:
在这里插入图片描述
其中footer.php页面没用,header.php页面只是首页的三个跳转链接,index.php页面也没有可利用内容。
db.php页面中,查看到如下SQL语句:

CREATE TABLE products (
  name char(64),
  secret char(64),
  description varchar(250)
);

INSERT INTO products VALUES('facebook', sha256(....), 'FLAG_HERE');
INSERT INTO products VALUES('messenger', sha256(....), ....);
INSERT INTO products VALUES('instagram', sha256(....), ....);
INSERT INTO products VALUES('whatsapp', sha256(....), ....);
INSERT INTO products VALUES('oculus-rift', sha256(....), ....);

其中给出了提示,flag在facebook中,若想查询产品细节,需要产品的Secret值,一开始猜测本题是一道SQL注入题,但未找到可用的注入点,通过查阅大佬wp,得知是道基于约束的SQL攻击,参考资料:基于约束的SQL攻击

1. 数据库字符串比较
在数据库对字符串进行比较时,若两字符串长度不一样,则会在较短的字符串末尾填充空格,使两个字符串长度一致。
例:
str1str的比较,比较时会在str的后面添加一个空格以补足长度。

也就是说,对于查询语句:

select * from users where username='test'
select * from users where username='test '

查询结果是一致的。

2. INSERT截断
在数据插入时,若数据长度超过了预先设定的限制,例如:name char(64)时,数据库会对字符串进行截断,只保留限定的长度。

在本题db.php页面源码中,查看添加产品和查询产品详情函数:

// 添加产品
function insert_product($name, $secret, $description) {
  global $db;
  $statement = $db->prepare(
    "INSERT INTO products (name, secret, description) VALUES
      (?, ?, ?)"
  );
  check_errors($statement);
  $statement->bind_param("sss", $name, $secret, $description);
  check_errors($statement->execute());
  $statement->close();
}

插入语句中"INSERT INTO products (name, secret, description) VALUES ($name, $secret, $description)",并未做任何处理,直接插入数据库。

// 查询产品详情
function get_product($name) {
  global $db;
  $statement = $db->prepare(
    "SELECT name, description FROM products WHERE name = ?"
  );
  check_errors($statement);
  $statement->bind_param("s", $name);
  check_errors($statement->execute());
  $res = $statement->get_result();
  check_errors($res);
  $product = $res->fetch_assoc();
  $statement->close();
  return $product;
}

在查询语句中"SELECT name, description FROM products WHERE name = $name",只是对获取的$name变量进行了拼接,未进行任何处理。

结合两点,产生了本题的利用点:

  • 添加一个facebook用户,即在产品名后加大于长度限制的空格,空格后需再跟若干个字符,在添加数据时,使添加的产品名与目标一致。
  • 查询时,返回的用户名是目标信息,达到水平越权

构造添加的产品信息:

Name:facebook                                                            11
Secret:qweASDzxc123
Description:123

在这里插入图片描述
添加成功,此时再查询刚刚添加的产品详情:

Name:facebook
Secret:qweASDzxc123
// 因为在存入数据库时,添加的Name属性长度超过限制被截断

查询成功,得到flag:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BUUCTF [FBCTF2019] Products Manager 的相关文章

  • AHU 2022 CTF新生赛web_writeup

    第一次当出题人 xff0c 给新生做的 xff0c 简简单单啦 按不了的F12 启动靶机 xff1a 根据题目名称可知 xff0c 这题与f12按键有关 xff0c 即查看网页源代码 按下f12发现f12按键被禁用 xff1a 尝试另一种方
  • buuctf simplerev 中的小头位序

    33条消息 BUUCTF SimpleRev xff08 涉及大小端序存储的问题 xff09 Ireb9z的博客 CSDN博客 buuctfsimplerev https blog csdn net afanzcf article deta
  • BUUCTF WEB 极客大挑战 2019 LoveSQL

    题目 解题 1 输入万能密码 用户名 admin or 1 1 密 码 1 2 确定回显列 用户名 1 union select 1 2 3 select 1 2 逐步增加 直到不报错即得到正确的列数 密 码 1 说明查询列数为3 回显列为
  • 南邮CTF-WEB-write-up 教程详细解说

    单身一百年也没用 Download COOKIE MYSQL sql injection 3 x00 bypass again 变量覆盖 PHP是世界上最好的语言 伪装者 Header 上传绕过 SQL注入1 pass check 起名字真
  • BUUCTF WEB [极客大挑战 2019]Knife

    BUUCTF WEB 极客大挑战 2019 Knife 根据提示直接使用蚁剑连接 在文件根目录中找到flag文件 获得flag flag b297ceda a835 48bb acf9 2a6c03f68d32
  • ctf-ping命令执行

    GXYCTF2019 Ping Ping Ping 现在做一下关于常见的绕过ping执行其他命令的姿势 启动环境 连接并输入参数 查看当前目录下都有什么 ls命令没有被过滤 并且知道flag就在这个目录下面 用cat查看的flag的时候发现
  • BUUCTF WEB 强网杯 2019 随便注

    1 题目 2 解题 2 1 尝试点提交 url变为 http b61f33a4 644b 402a 9da5 4bdf8043f954 node4 buuoj cn inject 1 可知传入的参数名为 inject 参数为1 2 2 尝试
  • xman 厦门邀请赛 pwn1 babystack writeup

    题目描述 这个题目针对现在的我还是有点难度的 花费了我三天的时间 最后发现原因竟是因为字符转化为整型的过程中多加了好多0 分析思路 1 首先查看文件的详细信息 tucker ubuntu xman pwn pwn1 file babysta
  • Buuctf(Easy Calc 1)

    一 解题步骤 1 发现了一个可以得到计算结果的输入框 说明这题可能是一道命令执行 或者注入题目 我们输几个数字发现可以得到正确答案 但输入字母就会报错 我们看一下html源码 进行代码审计
  • [HFCTF2020]EasyLogin

    知识点 jwt伪造 jwt 全称 Json Web Token 是一种令牌格式 可以用来区分各个用户 形式是下面这样 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJzZWNyZXRpZCI6MSwidXNl
  • BUUCTF zip伪加密(发现伪加密的惊天大秘密)

    title BUUCTF zip伪加密 date 2021年8月18日 20点03分 tags BUUCTF Misc categories BUUCTF Misc 这道题我为何要单独拿出来写呢 因为我在解题的途中 发现了zip伪加密的惊天
  • WEB_HCTF_2018_WarmUp

    Categories web 代码审计 write up source code get source code http eb22847d 9f8a 4ecf b972 5ecebfcf5faf node3 buuoj cn source
  • Bugkuctf--逆向第三题游戏过关题解

    题目链接 https ctf bugku com challenges 先让我们来打开文件 既然题目都说是游戏过关了 那就玩玩这个游戏呗 雾 游戏还是很简单的 但显然这道题应该用逆向的思维来做 废话 正式部分 逆向的题拿到手一般能考虑的工具
  • BUUCTF做题Upload-Labs记录pass-01~pass-10

    BUUCTF做题Upload Labs记录pass 01 pass 10 pass 01 前端验证后缀 传1 png 抓包改1 php 即可 蚁剑连 http your ip upload 1 php pass 02 验证content t
  • CTF MISC解题思路BUUCTF MISC1-8刷题

    1 签题 扫描二维码到得flag 2 金 胖 题目为gif动画 用wps打开每帧保存成图片 flag就在其中几张图片 3 二维码 下载题目解压得到一个二维码图片 扫描没发现flag 使用010editor打开图片发现文件头为89 50 4E
  • BUUCTF base 第三题Upload-Labs-Linux1比较省事的方法

    1 安装蚁剑 首先下载蚁剑 链接 https pan baidu com s 1O6Ty2Qmk7AVuY9QU CD9gQ fm lk0 提取码 1234 其次解压蚁剑 共两个文件需解压 在AntSword Loader中双击运行 gt
  • [MRCTF2020]千层套路

    MRCTF2020 千层套路 题目地址 https buuoj cn challenges MRCTF2020 E5 8D 83 E5 B1 82 E5 A5 97 E8 B7 AF 解压压缩包 发现是密码竟然是压缩包名称 再根据题目 tn
  • 全国大学生信息安全竞赛真题(CTF)

    web篇 https blog csdn net csu vc article details 78011716 https www cnblogs com iamstudy articles 2017 quanguo ctf web wr
  • [NCTF2019]Fake XML cookbook

    NCTF2019 Fake XML cookbook 日常刷题 打开题目嗯 一开始我的脑子里想到的是禁止自娱自乐 狗头 哈哈 第一想法就是试一下admin 别问为什么 web狗的自觉 果然没这么容易 抓包 将提交的数据放到了doLogin
  • BUUCTF [极客大挑战 2019] Http

    BUUCTF 极客大挑战 2019 Http 启动环境 主页为三叶草技术小组纳新 查看网页源码 发现隐藏的页面 div class image img src images pic01 jpg alt div div class conte

随机推荐

  • python为什么int()无法将float转化成int

    原因可能是你用了np zeros count 它的默认数据类型是float64类型的 而且不管你往这个np列表传入什么类型的值 或者后期怎么int 都没用 因为它会自动又改为float类型 并且这个float类型可不是原生的浮点类型 虽然
  • 【手势识别小车】---------(1)项目发起计划与准备

    嵌入式学习从大一到大二已经有两年了 学习了很多零零散散的东西 单片机 通信 视觉 ROS等等 但是没有进行系统的管子所以设计如下一个项目 作为自己阶段性的总结 功能设计 1 小车根据指令前进 后退 转向 停止 2 上位机摄像头进行人脸识别
  • GitHub 搜索技巧

    GitHub 作为目前广大程序猿最大的游乐场 在今年 6 月被 微软 以 75 亿美元价值的微软股票收购 GitHub 再次成为业界讨论的焦点 GitHub 以自由开放的定位吸引了相当多的个人开发者和企业 不断发布和更新相当好用的软件和工具
  • 毕业了

    自己的学生时代快告一段落 即将迎来的是工作时代 对未来充满了好奇 兴奋 希望我保有激情的去面对工作 在写论文的过程中 我也有对自己的论文感兴趣的 比如对Hadoop 但是对于另外一方面没了兴趣 也没有怎么深究 因此 这也是自己的论文的一个遗
  • Spock单元测试框架介绍及在美团优选的实践_第二章(static静态方法mock方式)

    Spock单元测试框架介绍 文章目录 Spock单元测试框架介绍 前言 一 什么是Spock单元测试框架 二 使用步骤 1 引入maven依赖 2 创建GoodsService订单业务类进行单测 3 创建Groovy class类 4 创建
  • pip安装yaml出错问题及解决方案

    pip安装yaml出错问题及解决方案 在使用Python开发过程中 可能会遇到需要安装第三方库的情况 而有时候我们在使用pip install安装某些库时 会遇到一些错误提示 其中就有可能会出现 ERROR Could not find a
  • python删除列数据,另存为xls格式带表头

    使用python删除列数据 import pandas as pd from pandas import DataFrame data pd read excel r 统计 xls sheet name Sheet1 del data 统计
  • LoadRunner 引入在eclipse中写的java项目,并介绍LR的使用(不是简单的打印语句项目)

    摸索了4天中终于在LoadRunner中把java脚本编译通过了 可以正常的运行Java脚本进行性能测试 一 介绍环境 eclipse JDK1 8 32位的 LR12 55 如果有需要LR12 55的小伙伴 在百度网盘直接下 链接 htt
  • 博客系统自动化测试项目实战(测试系列9)

    目录 前言 1 博客前端页面测试用例图 2 测试用例的代码实现 2 1登录页面的测试 2 2博客列表页面的测试 2 3写博客测试 2 4博客详情页面的测试 2 5已发布博客的标题和时间的测试 2 6注销用户的测试 结束语 前言 之前小编给大
  • Android Studio 插件开发8、替换文本

  • Qt6 第一天认识基本模块、附加模块、支持的平台、QML用户界面

    文章目录 Qt6 焦点 Qt6 核心 基本模块 Qt6 附加模块 Qt6 支持的平台 Qt6 简介 Qt6 消化用户界面 Qt6 焦点 Qt 5在很多年前发布 引入了一种新的声明方式来编写令人惊叹的用户界面 从那时起 我们周围的世界发生了很
  • windows10连接小米耳机Redmi AirDots 2

    1 控制面板 2 添加蓝牙设备 3 搜索 4 下一步 如果链接不上 请删除已有设备从第一步开始重新做
  • 2017年如何成为全栈工程师,这些技能是你必须具备的!

    转载自 A Guide to Becoming a Full Stack Developer in 2017 作者 Daniel Borowski 译者 夜风轻扬 编者按 根据Stack Overflow 2016 Developer 调查
  • 字节一面:post为什么会发送两次请求?

    前言 最近博主在字节面试中遇到这样一个面试题 这个问题也是前端面试的高频问题 因为在前端开发的日常开发中我们总是会与post请求打交道 一个小小的post请求也是牵扯到很多知识点的 博主在这给大家细细道来 作者简介 程序员小豪 全栈工程师
  • Redis 高性能IO模型:为什么单线程Redis能那么快?

    今天 我们来探讨一个很多人都很关心的问题 为什么单线程的 Redis 能那么快 首先 我要和你厘清一个事实 我们通常说 Redis 是单线程 主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的 这也是 Redis 对外提供
  • SQL行列转换

    常见的行列转换包括以下四种情况 1 列转行 2 行转列 3 列转换成字符串 4 字符串转换成列 1 列转行 导入数据 DROP TABLE IF EXISTS t student CREATE TABLE t student id int
  • 教你一招,彻底清除“一刀999”的弹窗广告

    大家的电脑是不是也经常弹出烦人的广告 对于程序员来说 电脑从不离手 如果总是弹出广告 特别的烦人 今天我就来分享如何屏蔽广告 666 跟弹窗广告说拜拜 教你一招 彻底清除恶意软件的弹窗广告 一 首先按Win R打开运行 二 然后我们输入MR
  • VC6++配置汇编环境和第一个简单程序

    准备工作 1 下载并安装VC6 软件 2 下载Irvine32 lib库以及相关文件 Intel 汇编语言程序设计 irvine lib文件内 3 下载ml exe和ml err文件 ml from masm32文件内 以上准备工作的文件均
  • JPA 多对多映射,查询死循环

    解决方法 中断循环即可 首先这不是jpa的问题 是序列化的问题 我们只要中断序列化就可以了 通过注解 JsonIgnoreProperties value dblist 将产生死循环的属性忽略 中断死循环 例子 Entity Data pu
  • BUUCTF [FBCTF2019] Products Manager

    BUUCTF FBCTF2019 Products Manager 考点 基于约束的SQL攻击 数据库字符串比较 INSERT截断 启动环境 产品管理 其中有三个功能 查看前5的产品 添加产品 查看产品细节 知道了大致功能 尝试正常的业务逻