Python利用SQLmap API接口进行批量的SQL注入检测;sqlmapapi脚本自动化扫描URl,批量SQL注入

525 阅读1分钟

编写sqlmapapi脚本,实现自动化扫描目标地址,调用sqlmapapi对目标地址进行sql注入

Author:musen 代码如下:

首先:进入sqlmap目录,启动sqlmapapi,命令:python sqlmapapi.py -s

屏幕截图 2023-08-06 121852.png

import time import requests,json

def sqlmapapi(url):

data = {
    "url": url
}
headers = {
    "Content-Type": "application/json"
}

# 创建新任务,记录任务ID
task_new_url = 'http://127.0.0.1:8775/task/new'
resp = requests.get(task_new_url)
task_id = resp.json()['taskid']
# print(task_id)

if 'success' in resp.content.decode('utf-8'):
    print('sqlmapapi task create success!')
    # 设置任务ID的配置信息(扫描信息)
    task_set_url = "http://127.0.0.1:8775/option/" + task_id + "/set"
    task_set_resp = requests.post(task_set_url, data=json.dumps(data), headers=headers)
    # print(task_set_resp.json())

    if 'success' in task_set_resp.content.decode('utf-8'):
        print('sqlmapapi task set success!')
        # 启动对应ID的扫描任务
        task_start_url = "http://127.0.0.1:8775/scan/" + task_id + "/start"
        task_start_resp = requests.post(task_start_url, data=json.dumps(data), headers=headers)
        # print(task_start_resp.json())
        if 'success' in task_start_resp.content.decode('utf-8'):
            print('sqlmapapi task start success!')
            while 1:
                # 获取对应ID的扫描状态
                task_status_url = "http://127.0.0.1:8775/scan/" + task_id + "/status"
                task_status_resp = requests.get(task_status_url)
                # print(task_status_resp.json())
                if 'running' in task_status_resp.content.decode('utf-8'):
                    print('suqmapapi task scan running!-->' + url)
                    pass
                else:
                    # print('sqlmapapi task scan end!')
                    #扫描结果查看
                    task_data_url = "http://127.0.0.1:8775/scan/" + task_id + "/data"
                    task_data_resp = requests.get(task_data_url).content.decode('utf-8')
                    print(task_data_resp)
                    with open(r'scan_result.txt','a+') as f:
                        f.write(url + '\n')
                        f.write(task_data_resp + '\n')
                    #如果结束删除ID
                    task_delete_url = "http://127.0.0.1:8775/task/" + task_id + "/delete"
                    task_delete_resp = requests.get(task_delete_url)
                    if 'success' in task_delete_resp.content.decode('utf-8'):
                        print('delete taskid success!')
                    break
                time.sleep(3)

if name == 'main': for url in open('url.txt'): url = url.replace('\n','') # print(url) sqlmapapi(url)

扫描成功结果如下:

屏幕截图 2023-08-06 122410.png