赞
踩
MySQL盲注入是在网址追加MySQL IF查询判断语句,通过网页输出正确网页与错误网页,来准确判断数据库中的值从而得到数据库内的数据,下面将用盲注入来获取当前数据库库名,来进行盲注入演示
在进行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)
一:判断是否能进行注入
进入创建好的靶机,在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)
后面的字母依次类推,最后把得到的字母组合到一起就是当前数据库名。
一:
MySQL自动化注入原理与手工注入原理相同,这里同样以获取当前数据库名为例,来进行测试
前期准备分为两步,一是搭建python环境,二是了解python库request模块的基本使用方法
二:
搭建好python环境后,我们将准备写入python文件,导入request模块,拼接URL网址,再使用requests.get()方法向网址发出请求,这里我们发出一个正确的URL,打印出requests.get()请求返回数据的长度,通过长度来判断网页输出是否正确,正确输出
运行上面代码,得到706,则表明页面输出正常则返回数据长度706,同样数据长度为706我们就能判断输出页面正常
使用 for 循环对数据库名每位字母,每种可能进行循环判断,如果if(len(r.content))==706,则输出结果转换成字母,并依次保存在flag变量中,打印出flag,退出循环
得到结果如图,数据库名已成功打印出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。