首页 > 数据库 >sql注入基础知识

sql注入基础知识

时间:2024-02-18 23:55:57浏览次数:26  
标签:数据库 sql 基础知识 表名 查询 select 注入

sql注入基础知识

前言:之前也写过sql注入的文章,但更多的是写题的记录,对一些sql注入的基本知识点没有涉及,今天来更进一

步的讲解sql注入

我们检测是否可以进行注入,首先要查看网站是否存在参数传递,不一定是要在url地址中含有查询字符串,数据

可能通过post方式提交,更改post数据也可进行注入,对于同时传递多个参数时,多个参数都要进行测试

sql注入攻击流程

1 猜测数据库类型

2 根据类型选择思路

在发现存在注入点时,我们如何判断数据库类型呢?

首先可以通过端口扫描找到网站开放的端口

mysql 默认开放 3306

Oracle 默认端口为1521

sqlserver 默认端口为 1433

PostgreSql 默认端口号:5432

Access Access数据库属于文件型数据库,所以不需要端口号

除了这种方法,我们还可以通过 查询不同数据库的特定表实现

mysql : and (select count(*) from information_schema.TABLES)>0 and 1=1

oracle : and (select count(*) from sys.user_tables)>0 and 1=1

sql server :and (select count(*) from sysobjects)>0 and 1=1

其余方式见:此博客

获取了数据库类型,我们就可以进行下一步注入了

1.1 access 简易注入 + 字典猜解

如果我们知道账号密码存储的表名和列名,直接进行注入即可,首先是利用 order by +数字来判断列的数量

用法为 : and order by 数字 数字为列的数量,比如查询的该表一共有5列,数字给1-5都是正常,给6就会报错,

无法正常显示,我们获得列的数量用于在下一步进行显示位查找,具体的方法如下

union select 1,2,3,4,5 from 表名; 数字截至到初始显示表的最大值,就是我们上一步在order by中得到的

值,我们注入该语句后,查看页面中出现的数字,出现几说明显示位在第几位,比如如果页面原本正常的文字变成

了3,4那么就说显示位为 3,4 我们可以进行下一步 : union select 1,2,password,username,5 from 表名

通过该方式,可以将另一表中我们想要查询的数据,比如账号密码,拼接到原本查询的表中,即使原本的表中指定

了要输出的列名,也可也顺利输出我们想要的数据,这种情况适用于我们知道了要查询的表名和列名,比如

admin表下的admin列和password列

access数据库由于没有存储表名和列名的表,

标签:数据库,sql,基础知识,表名,查询,select,注入
From: https://www.cnblogs.com/rpup/p/18020183

相关文章

  • centos7安装mysql随记
    安装途中出现RPM-GPG-KEY-mysql实现问题,通过rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022解决,如果网络不好也可以直接复制RPM-GPG-KEY-mysql-2022的内容到RPM-GPG-KEY-mysql中虚拟机版本是centos7,安装mysql5.7,把rpm文件下载好之后直接放到虚拟机上也可以通过虚......
  • docker启动mysql失败原因分析
    dockerlogsmysql 发现问题Can'treaddirof'/etc/mysql/conf.d/修改原因:原来的命令:dockerrun-p3306:3306--namemysql-v/mydata/mysql/log:/var/log/mysql-v/mydata/mysql/data:/var/lib/mysql -v/mydata/mysql/conf:/etc/mysql-eMYSQL_ROOT_PASSWORD=roo......
  • Docker 安装 MySQL8.0
    docker安装mysqldocker仓库搜索mysqldockersearchmysqldocker仓库拉取mysql8.0dockerpullmysql:8.0//默认拉取最新版本dockerpullmysql查看本地仓库镜像是否下载成功dockerimagesmysql:8.0安装运行mysql8.0容器dockerrun-p3307:3306--namem......
  • SQL优化
     SQL执行过程:连接建立:应用程序连接数据库:应用程序通过数据库客户端与数据库服务器建立连接。认证和授权:数据库服务器验证应用程序的身份,并根据其权限确定其是否可以执行特定的SQL操作。SQL解析:SQL解析:数据库服务器接收到应用程序发送的SQL语句,对其进行解析,检......
  • MySQL 添加主键减少磁盘空间的使用
    测试使用的版本:MySQL8.0.32时至今日的MySQL8.3.0,默认都是不需要在定义表的时候定义主键。不过GroupReplication和PerconaXtraDBCluster(PXC)缺省不支持没有主键的表。表缺少主键会有很多负面的性能影响,最大的确定是影响复制的速度。今天,来简单说说使用主键的另一个原......
  • SQL批量更新部分B表的数据,数值来源于A表,根据AB关联字段作为过滤条件
    1.需求描述A表是全数据表,需要批量更新B表制定列的部分数据。条件是B表的另外一列定于A表的另外一列2.实例代码updateBsetcol1=A.col1fromAwhereB.col2=A.col2andb.col2>'2024-01-11';3.代码说明where后面第一份条件是两表的关联关系,第二个条件是对B表更......
  • centos7.6 安装Mysql5.7
    #安装Mysqlwgethttp://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpmyumlocalinstallmysql57-community-release-el7-8.noarch.rpmrpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022yumrepolistenabled|grep"mysql.*-community.*"......
  • mysqldump备份
    前言:mysqldump是日常比较常用的一个工具了,在对数据库进行导出工作时,经常会用到mysqldump。本篇文章将介绍mysqldump工具的使用方法并分享几点备份技巧。1.mysqldump使用简介mysqldump是MySQL系统自带的逻辑备份工具,主要用于转储数据库。它主要产生一系列的SQL语句,可......
  • Log4j2 JNDI注入漏洞
    2021年一个log4j2的JNDI注入漏洞轰动中外,因为其影响力非常大并且使用门槛比较低。Log4j2并不是一个服务,只是java一个记录日志的类库,但是java中用来记录日志的库本就没几个。所以使用非常广形成原因是log4j2使用一个Lookups的机制,也就是记录日志的时候会嵌入用户输入数据。这个Loo......
  • PostgreSQL提示信息乱码
    在win11环境下部署开发环境,安装pgsql16后测试连接正常,系统终端环境下提示信息正常显示。但在vscode中与数据库连接工具中发现数据库返回的提示信息乱码,虽不影响使用但看着实在别扭所以想着处理下。在查阅相关资料后发现,配置文件postgresql.conf中的lc_messages参数值为lc_mes......