当前位置:   article > 正文

MySQL盲注入_mysql 盲注

mysql 盲注

1.MySQL盲注入原理

MySQL盲注入是在网址追加MySQL IF查询判断语句,通过网页输出正确网页与错误网页,来准确判断数据库中的值从而得到数据库内的数据,下面将用盲注入来获取当前数据库库名,来进行盲注入演示

2.MySQL函数

在进行MySQL盲注入,的使用以下MySQL函数
database() 查看数据库名
substr(str,1,4) 字符串截取
mid(str,1,4) 字符串截取
ascii码
if (条件,True,False)

database()
在这里插入图片描述
substr(str,1,4)
在这里插入图片描述if(条件,1,0)
在这里插入图片描述
if((ascii(substr(database(),1,1))=15) ,1,0)

3.mysql手工注入测试

一:判断是否能进行注入
进入创建好的靶机,在url网址中传入参数id=1看是否能正确输出页面
在这里插入图片描述输出You are in … 表示正常输出页面,分别传入参数1‘ and 0与1‘ and 1 进行与运算得到的结果分别为false与true ,得到true输出页面you are in … ,false则输出错误不会显示you are in …,如下图
在这里插入图片描述
二:使用数据库函数获取库名

截取当前数据库名第一位字母,并把字母以 ascii 码方式转换成对应的数字,再使用 if 语句对数字进行条件判断,条件为真则输出1,假则输出0,语句如下
if(ascii(substr(database(),1,1))>100,1,0)

在URL网址传入参数:
id=1' and if(ascii(substr(database(),1,1))>100,1,0) --+

在这里插入图片描述输出页面显示you are in … 表示截取当前数据库名第一个字母的ascii码大于100为真,再次传入参数:
id=1' and if(ascii(substr(database(),1,1))>120,1,0) --+
在这里插入图片描述输出页面没有显示出数据,则表明截取当前数据库名第一个字母的ascii码大于120为假,这时我们就可以判断出第一个ascii码的值大于100,小于120,多次进行判断,不断缩小范围就可判断出数据库名第一个字母的值,第二个字母则使用相同的方法,得出ascii码值,但要注意截取第二个字母,要改变截取函数substr参数:substr(dataabase(),2,1)
后面的字母依次类推,最后把得到的字母组合到一起就是当前数据库名。

4.MySQL自动化注入测试

一:
MySQL自动化注入原理与手工注入原理相同,这里同样以获取当前数据库名为例,来进行测试
前期准备分为两步,一是搭建python环境,二是了解python库request模块的基本使用方法
二:
搭建好python环境后,我们将准备写入python文件,导入request模块,拼接URL网址,再使用requests.get()方法向网址发出请求,这里我们发出一个正确的URL,打印出requests.get()请求返回数据的长度,通过长度来判断网页输出是否正确,正确输出
在这里插入图片描述运行上面代码,得到706,则表明页面输出正常则返回数据长度706,同样数据长度为706我们就能判断输出页面正常
在这里插入图片描述使用 for 循环对数据库名每位字母,每种可能进行循环判断,如果if(len(r.content))==706,则输出结果转换成字母,并依次保存在flag变量中,打印出flag,退出循环
在这里插入图片描述得到结果如图,数据库名已成功打印出
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/573976
推荐阅读
相关标签
  

闽ICP备14008679号