首页 > 数据库 >SQL注入

SQL注入

时间:2023-05-16 21:11:33浏览次数:42  
标签:语句 数据库 拼接 SQL 注入 列名 schema

1、SQL注入的危害

数据库数据泄露、注入获得shell

2、SQL注入原理

可控变量、带入到数据库中查询、变量未存在过滤或过滤不严谨

原理就是网页中用户可以传入一个参数,这个参数和后端代码的sql语句进行拼接,然后将拼接后的sql语句放到数据库中进行数据操作。原本这个参数是为了在数据库中数据操作的一些条件限制,现在我们可以将and 1=2拼接上让这条sql语句失效,然后再拼接上其他的sql语句来查询我们想要的数据。

3、SQL注入判定

www.along.com/id=1 and 1=1

www.along.com/id=1 and 1=2

www.along.com/id=1如果拼接and 1=1显示页面正常,拼接and 1=2页面错误,这种情况就有可能有注入点。原本www.along.com/id=1就是能正常显示页面,然后我们使用and且逻辑运算符和后面再加一个逻辑判断语句。且两真为真,一假则假。通过且这两个语句,就验证可以往上面拼接SQL语句,可以注入了。

4、信息收集

数据库版本:version()

数据库名字:database()

数据库用户:user()

操作系统:@@version_compile_os()

知识点:

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

2、数据库中符号:"."代表下一级

information_schema.tables:记录所有表名信息的表

information_schema.columns:记录所有列名信息的表

table_name:表名

column_name:列名

table_schema:数据库名

-------------------------------------------------------------------------------------------------------------------------------------

墨者学院靶场SQL注入实验

经过判断后有注入

 

 猜解列名数量(字段数),order by x,x为第几列(1,2,3...),就是能用最大列来排序还能正常显示页面,这里使用这个方法猜出来有4列。

 报出二战

 可以看出来第二列和第三列有回显点,第二列用version()查看数据库版本,第三列用database()查看数据库名

 再第二列用user()查看数据库用户,第三列用@@version_compile_os查看操作系统

select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup',找到上面数据库中的表名

 找到上面数据库中的列名

 显示出用户名和密码

将后面一个密码解密登录,成功拿到了key

 

标签:语句,数据库,拼接,SQL,注入,列名,schema
From: https://www.cnblogs.com/panglinglong/p/17404430.html

相关文章

  • SSM整合报错:errorCode 1045, state 28000 java.sql.SQLException: Access denied for
    SSM整合报错:errorCode1045,state28000java.sql.SQLException:Accessdeniedforuser简述SSM整合项目配置好环境后,当要对数据库进行操作,加载jdbc.properties数据库配置文件时,出现下面的报错createconnectionSQLException,url:jdbc:mysql://localhost:3306/furn_ssm,......
  • SQL常用的基础语法
    声明        本公众号所有内容,均属微信公众号:开源优测 所有,任何媒体、网站或个人未经授权不得转载、链接、转贴或以其他方式复制发布/发表。已经本公众号协议授权的媒体、网站,在使用时必须注明"稿件来源微信公众号:开源优测",违者本公众号将依法追究责任。SQL常用的语法......
  • MySQL数据基础知识整理—1
     MySQL数据库在学习之前,我们要了解什么是MySQL数据库?MySQL数据库是一个开源的关系型数据库管理系统,我们可以使用SQL(StructuredQueryLanguage)作为开发语言,对数据进行操作,并且,该数据库支持多用户,多线程,多种存储引擎,因此被广泛的应用于Web开发中。    简单来说,MySQL数据库就......
  • 【Azure 应用服务】应用服务连接 Azure MySQL 一直失败,报错 Create connection error
    问题描述AppService上部署的Java应用,连接 AzureDatabaseforMySQL失败。错误信息:Createconnectionerror,url:jdbc:mysql://.......................communicationslinkfailure. 问题解答应用的错误信息提示为:与MySQL数据库建立连接失败。所以需要考虑如下几种......
  • MySQL日期时间加|减法
    日期加法selectdate_add(curdate(),intervalNSECOND);--加N秒selectdate_add(curdate(),intervalNMINUTE);--加N分钟selectdate_add(curdate(),intervalNHOUR);--加N小时selectdate_add(curdate(),intervalNday);--加N天selectdate_add(curdate(......
  • SQL语句之插入数据
    SQL提供了INSERT语句,用于将一行或多行插入表中。INSERT语句用于:向表中插入一行向表中插入多行将行从一个表复制到另一个表中。一、在表中插入一行记录INSERTINTOtable1(column1,column2,...)VALUES(value1,value2,...);如果在插入新行时未在INSERT语句中指定列及......
  • mysql int之显示长度
    mysqlint之显示长度作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值......
  • 依赖注入方式
    向一个类中传递数据的方式有几种?普通方法和构造方法依赖注入描述了在容器中建立bean与bean之间依赖关系的过程,如果bean运行需要的是数字或字符串呢?引用类型(对象)简单类型(基本数据类型与String)依赖注入方式 setter注入(简单类型,引用类型) 构造器注入(简单类型,引用类型) ......
  • MySQL-8.0.20安装步骤
    1.创建软件目录,方便管理[root@wp-centos/root]#mkdir/software&&cd/software2.下载安装包[root@wp-centos/software]#wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-el7-x86_64.tar.gz3.解压安装包[root@wp-centos/software]#tarxfm......
  • 问题记录之mysql:Job for mysqld.service failed because the control process exited
    今天服务器连接mysql发现一直超时(查出的原因是磁盘满了)清了磁盘以后,mysqld.service 还是无法启动执行命令及报错如下:(注意,因为磁盘满的问题,我的mysql并不是正常途径关闭的)控制进程以错误代码退出导致无法以正常的方式启动它了,错误说明:Jobformysqld.servicefailedbecauset......