网安之web攻防第三十天

2023-10-26

#知识点:

1、数据库堆叠注入

根据数据库类型决定是否支持多条语句执行

2、数据库二次注入

应用功能逻辑涉及上导致的先写入后组合的注入

3、数据库Dnslog注入

解决不回显(反向连接),SQL注入,命令执行,SSRF等

4、黑盒模式分析以上

二次注入:插入后调用显示操作符合

堆叠注入:判断注入后直接调多条执行

DNS注入:在注入上没太大利用价值,其他还行

本节课讲四个知识点,分别是堆叠注入、二次注入、dnslog注入、黑白盒分析。首先说一下堆叠注入,这个堆叠注入就是将一堆sql语句叠加在一起执行,使用分号结束上一个语句再叠加其他语句一起执行。(SQL语句;SQL语句

根据数据库类型决定是否支持多条语句执行

支持堆叠数据库类型:MYSQL MSSQL Postgresql等

但是这个堆叠注入的触发条件比较苛刻,你在实际场景中遇到的会比较少,在ctf比赛中可能遇到的比较多一些。主要原因是,堆叠注入的利用看起来很厉害但是其可能会受到 API、数据库引擎或者权限的控制。只有当调用函数库函数支持执行多条语句执行的时候才可以利用。最直观的表现就是比如你想利用堆叠注入,这个语句在数据库中可以执行(比如navicat这个软件),但是放到我们正常看到的输入框中就不行了,也就是我们正常能看到的网页前端。

利用mysql_multi_query()函数就支持多条SQL语句同时执行,实际情况中如PHP的防SQL注入机制,其使用的数据库函数为 "mysqli_query()"函数。 所以说堆叠注入的使用条件比较有局限性。但是一旦可以被使用,造成的伤害则是非常巨大的。

接下来对于一道ctf题我们来做一下,在buuctf中直接搜“随便注”三个字就可以找到,打开靶机之后,这个是利用堆叠注入的考题,直接输入下面的payload就行了

这里由于select被过滤了,所以我们利用hex编码将数据转换成16进制,这里把(select flag from `1919810931114514`)转换为(

0x73656c656374202a2066726f6d20603139313938313039333131313435313460)才能正常注入得到flag。

第二个知识点,讲解二次注入,这个二次注入就是说先把恶意sql代码传到数据库里面,然后在刷新页面的同时就会执行它,我觉得它比较像那个储存型xss。

原理:用户向数据库里存入恶意的数据,在数据被插入到数据库之前,肯定会被数据库进行转义处理,但用户输入的数据的内容肯定是一点摸样也不会变的存进数据库里,而一般都默认为数据库里的信息都是安全的,查询的时候不会进行处理,所以当用户的恶意数据被web程序调用的时候就有可能出发SQL注入。

下面讲两个案例,第一个是ctf考题,第二个cms。

第一个考题,我们进去是login.php,可以通过暴力路径探测工具扫出来还有一个register.php。login.php是登录页面,register.php是注册页面。

左边的图是login,右边的是register。我们先进行注册再登录,登上去之后,点开个人主页,可以看到上面已经显示了名字,那他为啥会自动显示呢,并且我们在登录的时候会发现只让我们填了邮箱和密码,没让我们填名字,所以在主页显示的姓名可能是通过一个查询语句,条件是邮箱等于xiaopei@qq,com。密码是123456。就会得到username的值是xiaopei

这里直接用的脚本解题的,直接把url放进去即可出flag。

第二个案例就是cms了

首先安装好网站,源码在资源库中。首先站在黑盒的角度看根据功能点去试哪里存在注入点,这里直接说是做简历的第四步填学校的时候有注入点(这个网站好像就是做网站的),正常的情况是我们填学校的名字,这里我们制造payload,写上xiaopei ‘ , address=user()#。

这里我们需要前提知道地址那一栏的字段名是adress,猜不出来的话就gg。

从下图可以看到刚开始写上的地址是vawvawv,当我们输入payload保存之后可以看到,地址那一栏已经变成了用户名的值了。这是因为我们利用payload已经把原先vawvawv的值改成用户名了。当我们做简历的时候是用的insert插入语句,当我们点保存的时候是执行的update语句,相当于我们点了保存之后,那个值就已经被改了并且保存到了数据库中。然后当我们查看保存的简历的时候就把改之后的数据查了出来。相当于是三个动作同时完成了。当我们从白盒的角度去看时,直接通过代码追踪以及抓包看访问的时哪些文件即可找到相关漏洞。这里就不再演示了。

最后一个就是dnslog注入了,这个比较鸡肋,因为其出现的条件是需要具有文件读取的功能的,但如果说具有文件读取的功能的话,那就是高权限注入了,直接写入后门就行了。就用不着它了。但他也是肯定也是有用的,它常用于网站对于我们的一些不合法的请求操作没有回显或者过滤了敏感的回显内容。这个不是很重要,我不过多赘述,下面这个链接讲解的比较详细,我觉得比小迪讲的详细

(11条消息) 深度剖析DNSLog注入原理&本地实例测试_monster663的博客-CSDN博客

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

网安之web攻防第三十天 的相关文章

  • 根据自定义数组位置排序帖子

    我想根据自定义字段列出帖子列表 这里我有 9 个帖子 有不同的 3 个位置 中 上 下 Post ID title position 1 Post1 Top 2 Post2 Bottom 3 Post3 Top 4 Post4 Bottom
  • 在列名中使用保留字

    这是一些简单的代码 但我只是不知道为什么我不能使用这个词作为表的实体 CREATE TABLE IF NOT EXISTS users key INT PRIMARY KEY NOT NULL AUTO INCREMENT username
  • 检索多行最后插入的 id

    当将数据插入具有自动递增 PK 的表时 我需要获取该密钥以在另一个语句中使用 正如许多问题所示 这可以在 PHP 中使用mysql insert id 但是 我一直将插入内容分组在一起 因此一次插入不止一行 我这样做是因为我猜测可能会存在一
  • 基于 MySQL 中的另一列创建计算列

    我的表中有 2 列 varchar 8 and an int 我想要auto increment the int column当我这样做时 我想将值复制到varchar 8 column 但用 0 填充它直到它达到 8 个字符长 因此例如
  • 使用存储的日期字段来计算计算当前过去天数的字段

    我正在使用 MySQL 和 phpMyAdmin 我的数据库中有一个 日期 字段 我需要在 MySQL db 中创建一个字段 该字段将计算并显示自每个记录 行的 日期 字段中的日期以来已经过去的天数 我没有能力使用 PHP 即时生成代码 有
  • 如何使用 CodeIgniter 计算 MySQL 中给定行之前的行数?

    简单来说 如何计算某一行之前有多少行 我使用的是增量 ID 但行是随机删除的 因此仅检查 ID 是行不通的 比如说 如果我有 30 行 并且我根据名称 或任何实际内容 选择了一行 那么在该行之前有多少行 它可以是 16 1 12 或任何值
  • MS Access DAO 连接在退出时放弃更改

    因此 我有一个 Access 表单 我在其中使用此 VBA 代码以及与 MySQL 数据库的 DAO 连接 一切都很好 但如果用户关闭表单而不单击 保存 按钮 新记录无论如何都会保存 所以我正在寻找的是 是否有任何方法可以在关闭事件时阻止将
  • 在 Mac 上设置 Laravel php artisan 迁移错误:没有这样的文件或目录 [重复]

    这个问题在这里已经有答案了 将一个完美运行的 laravel 项目从 git 拉到运行 MAMP 的 mac 上 项目在linux机器上完美运行 作曲家安装 php artisan migrate 出现以下错误 PDOException S
  • ? LIKE(列 || '%')

    我可以有这样的条件吗 SELECT FROM table WHERE LIKE column 哪里的 是一个字符串参数值 例如 这些参数值 当列等于时应返回 true admin products admin products 1 admi
  • 无法从外部 bash 脚本正确设置 MySQL 密码

    我有两个脚本 主要的一个脚本执行一些不同的操作并调用第二个脚本 第二个脚本安装 MySQL 从我的主脚本中我做了这样的事情 read p Set the password for the database min 4 characters
  • 我可以在 MySQL 中存储图像吗?

    这个问题在这里已经有答案了 可能的重复 MySQL 中的图像 https stackoverflow com questions 1665730 images in mysql 在 MySQL 中存储图像 https stackoverfl
  • 通过php在csv单元格中创建回车符

    我正在尝试动态生成一个 csv 文件 其中包含一些包含多行的单元格 例如 地址字段需要分组为单个 地址 单元格 而不是地址 城市 州等 一切进展顺利 但在过去的两天里 我尝试在代码中插入 r r n n chr 10 chr 13 以及回车
  • 如何分别用其名称替换逗号分隔的部门 ID?

    我的桌子是这些 员工表 id name department 1 Carrera 1 2 Taylor 1 2 部门表 id name 1 CS 2 IT
  • 带有多表查询的 SQL Join 版本的 Djangoviews.py

    需要一些有关 Django 版本的 SQL 多表查询的帮助 该查询使用 3 个表来检索餐厅名称 地址Restaurants table和美食类型来自Cuisinetypes table 所有这些都基于通过 URL 传递的菜品名称 菜品 ID
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • mySQL中外键必须是索引吗?

    我刚刚自己创建了第一个 mySQL 表 除了使用 Joomla Wordpress 等 我是 MS SQL 开发人员多年 但通常我可以轻松地在 MS SQL 中创建外键 但我遇到了困难或这里缺乏知识 这是我的表格 users user id
  • 解析 JSONException:JSONArray 文本必须以字符 1 处的 '[' 开头

    我正在尝试将 Android 应用程序与本地 MySQL 数据库连接 但遇到问题 解析 JSON 数组 我在这里阅读了所有类似的问题 但没有任何作用 错误消息 Error parsing data org json JSONExceptio
  • 如何向多个涉及外键依赖的表插入数据(MySQL)

    我正在寻找将数据插入多个 MySQL 表的最佳实践方法 其中某些列是外键依赖项 这是一个例子 Table contacts contact id first name last name prof id zip code 联系人 表有主键
  • 在学说监听器中插入元素

    我已经设置了一个学说监听器 它在不同的数据库操作上触发并创建一个日志实体并将其插入数据库 class FOO public function onFlush OnFlushEventArgs args foreach args gt get
  • DataImportHandler 未在 solr admin 中索引 mysql 表

    我正在尝试使用 DataImportHandler 在 solr 中索引 mysql 表 但它似乎没有索引 数据配置 xml

随机推荐

  • JS逆向笔记之断点分类

    JS逆向笔记之断点分类 文章目录 JS逆向笔记之断点分类 1 JS断点 2 DOM断点 3 XHR断点 4 事件监听器断点 1 JS断点 1 Sources断点 Sources断点添加的流程是 F12 Ctrl Shift I 打开开发工具
  • Python-opencv读取深度图像

    由于实验需要用到Kinect2 0采集的深度图像 但是用以下程序读取深度图片的时候显不方便观察 temp img cup depth png depth filename os path join image dir depth img t
  • Error during job, obtaining debugging information... FAILED: Execution Error, return code 2 from org

    create table userbehavior partitioned2 user id string item id string category id string behavior type string partitioned
  • 【亚稳态、建立时间和保持时间】亚稳态的产生原因、危害及解决方法

    一 亚稳态的产生原因 如图所示 当 sys clk 时钟信号上升沿踩到 Rx 信号的变化间隙时 此时输出的 Rx reg1 信号就会出现亚稳态 其输出信号就会出现震荡 毛刺或者固定在某一电压值 而不是等于 D 端输入的值 经过震荡之后 Q
  • 模拟电路设计(4)--- J-FET的结构和工作原理

    场效应管和BJT在工作过程中有很大区别 BJT的电荷载体是空穴或是被击出的少量 少子 而场效应管的电荷则是多几个数量级的自由电子 多子 J FET晶体管 N沟道J FET晶体管结构示意图 以N沟道J FET来说明 结合J FET的电路符号示
  • OA项目之左侧菜单&动态选项卡

    目录 1 左侧导航 参考地址 http layui org cn doc element nav html 2 导入数据表及无限级分类 1 数据导入 此步骤在第一次文章已完成 2 无限级分类 父亲找儿子的过程 将对应的儿子放在父亲下面 形成
  • 从目标检测数据集中扣出所需类别进行分类

    文章目录 1 获取VOC数据集中两轮车 2 接着做COCO数据集的分类数据获取 3 YOLO 格式数据 4 openimage数据获取 获取标签 根据displayname 获取 labelname 并指定我们想要的类别 根据标签名找到对应
  • Java多线程编程

    1 Java多线程推荐两本比较好的书 Java多线程编程实战指南 核心篇 pdf 2017年出版 内容新 讲解清晰 首推这本 然后是 Java多线程编程核心技术 2015年出版 由浅入深 编程例子多 也不错 本博客只做易忘拾遗 2 this
  • 【100%通过率 】【华为OD机试 c++/java/python】任务总执行时长【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 任务总执行时长 任务编排服务负责对任务进行组合调度 参与编排的任务有两种类型 其中一种执行时长为taskA 另一种执行时长为taskB 任务一旦
  • 麒麟 mips mysql_中标麒麟(龙芯CPU)--docker基础镜像制作

    Docker 是一个开源的应用容器引擎 基于 Go 语言 并遵从Apache2 0协议开源 Docker 的出现为开发人员和运维人员带来了极大的便利 Docker在X86下常见的发行版Linux如Ubuntu Centos上应用非常成熟 教
  • 数据结构---插入排序

    插入排序 算法思想 具体流程 JAVA实现 算法时间复杂度为O n2 的排序 冒泡排序 弊端 元素交换次数太多了 选择排序 弊端 当数列包含多个值相等的元素时 选择排序有可能打乱它们原有的顺序 插入排序 算法思想 维护一个有序区 把元素一个
  • spring-session整合redis原理 排查失效原因

    根据网上配置了一个springsession整合redis作为session后 发现session获取失败 redis里面是有值 登录模块设置进去也能获取的到 但是其他的服务就获取不到 记录一下 跟着源码探寻为何失败 auth服务的配置 引
  • Linux下SVN 命令每次都要输入密码

    问题描述 SVN每次操作都需要输入密码 操作相当麻烦 影响效率 解决方法 修改vi subversion config 文件 将password stores的值修改为simple 即 password stores simple auth
  • k8s中文件描述符与线程限制

    背景 linux中为了防止进程恶意使用资源 系统使用ulimit来限制进程的资源使用情况 包括文件描述符 线程数 内存大小等 同样地在容器化场景中 需要限制其系统资源的使用量 限制方法 ulimit docker 默认支持ulimit设置
  • 跑深度学习nvidia驱动忽然失效的详细解决方法

    由于经常跑深度学习 所以对于显卡驱动什么的都还是整的比较明白的不含糊 所以都能跑的起来 但是今天跑pytorch框架时 用到cuda 忽然给我报了个错 RuntimeError No CUDA GPUs are available 这给我整
  • 两个非递减顺序表合并成一个非递减顺序表

    两个非递减顺序表合并成一个非递减顺序表 引入 以下这个例题的描述是关于合并两个有序的数组 然后合并之后同样也是一个非递减的顺序排列 但是我名这里讲的不是顺序表 而是封装成一个顺序表 但是我们这里的顺序表其实底层同样是一个数组 所以解题的思路
  • 脚踏实地《数据结构第二章》第一节:线性表的定义和基本操作

    考点分析 一 线性表的定义 数据结构三要素 逻辑结构 定义 线性表是具有相同数据类型的n n gt 0 个数据元素的有限序列 其中n为表长 当n 0时线性表是一个空表 相同 每个数据元素所占空间一样大 帮助计算机快速找到某一个具体的元素 序
  • Deepin(Linux)下安装tensorflow-gpu(2019-5-28)

    2019 9 7更新 六 6中安装tensorflow gpu不要采用pip install tensorflow gpu 1 9 直接用conda install channel https conda anaconda org anac
  • Spring MVC案例

    文章目录 Spring MVC 基于XML配置与注解的方式使用Spring MVC 一 创建项目SpringMVCDemo01 二 在pom xml中添加依赖 三 添加项目web功能 四 创建登录页面 登录成功页面 登录失败页面 五 创建登
  • 网安之web攻防第三十天

    知识点 1 数据库堆叠注入 根据数据库类型决定是否支持多条语句执行 2 数据库二次注入 应用功能逻辑涉及上导致的先写入后组合的注入 3 数据库Dnslog注入 解决不回显 反向连接 SQL注入 命令执行 SSRF等 4 黑盒模式分析以上 二