【python】sqlmapAPI-完成批量扫描

# Sqlmap API调用实现自动化SQL注入安全检测
# 调用API接口实现批量扫描
# 1.创建新任务记录任务ID		@get("/task/new")
# 2.设置任务ID扫描信息   	@post("/option/<taskid>/set")
# 3.开始扫描对应ID任务   	@post("/scan/<taskid>/start")
# 4.读取扫描状态判断结果		@get("/scan/<taskid>/status")
# 5.扫描结果查看     		@get("/task/<taskid>/data")
# 6.如果结束删除ID并获取结果	@get("/task/<taskid>/delete")

import requests
import json
import time
def get_data(url):
    url = url.replace('\n','')
    headers = {
        'Content-Type':'application/json'
    }
    data = {
        'url':url
    }
    return data,headers
def set_new():
    # 创建新的扫描任务 @get(/task/new)
    result=requests.get('http://127.0.0.1:8775/task/new')
    # task=result.json()
    task_id = result.json()['taskid']
    return task_id
def set_option(data,headers,task_id):
    # 设置扫描信息 @post(/option/<taskid>/set)
    scan_id='http://127.0.0.1:8775/option/'+task_id+'/set'
    scan_set=requests.post(scan_id,data=json.dumps(data),headers=headers)
    return scan_set.content.decode('utf-8')
def start_scan(task_id,data,headers):
    # 开始扫描任务 @post(/scan/<task_id>/start)
    scan_start_url='http://127.0.0.1:8775/scan/'+task_id+'/start'
    scan_start=requests.post(scan_start_url,data=json.dumps(data),headers=headers)
    # print(scan_start.content.decode('utf-8'))
    return scan_start.content.decode('utf-8')
def scan_status(task_id):
    # 获取扫描状态 @get(/scan/<taskid>/status)
    scan_status_url='http://127.0.0.1:8775/scan/'+task_id+'/status'
    scan_status=requests.get(scan_status_url)
    # print(scan_status.content.decode('utf-8'))
    return scan_status.content.decode('utf-8')
def scan_data(task_id):
    # 获取扫描结果 #get(/scan/<taskid>/data)
    scan_data_url='http://127.0.0.1:8775/scan/'+task_id+'/data'
    scan_data=requests.get(scan_data_url)
    # print(scan_data.content.decode('utf-8'))
    return scan_data.content.decode('utf-8')
def del_task(task_id):
    # 删除扫描任务 @get(/task/<taskid>/delete)
    del_url = 'http://127.0.0.1:8775/task/'+task_id+'/delete'
    del_resp = requests.get(del_url)
    # print(del_resp.content.decode('utf-8'))
    return del_resp.content.decode('utf-8')

if __name__ == '__main__':
    for url in open('url.txt'):
        data, headers = get_data(url)
        task_id = set_new()
        if task_id:
            # 任务创建成功,设置扫描信息
            set_s = set_option(data,headers,task_id)
            # print(set_s)
            if 'success' in set_s:
                # 设置完成开始扫描
                start_s = start_scan(task_id,data,headers)
                # print(start_s)
                if 'success' in start_s:
                    # 扫描开始,获取信息
                    while 1:

                        status_s = scan_status(task_id)
                        # print(status_s)
                        if 'running' in status_s:
                            print('目标扫描中...')
                            time.sleep(3)
                            pass
                        else:
                            # 扫描完成,获取扫描信息
                            data_s = scan_data(task_id)
                            # print(data_s)
                            # 将扫描结果保存到本地文件中
                            with open(r'scan_result.txt','a+') as f:
                                f.write(data_s+'\n')
                                f.write('====================python sqlmap scan==================\n\n')
                                f.close()
                            # 保存完成,删除扫描任务
                            del_s = del_task(task_id)
                            if 'success' in del_s:
                                print('任务删除成功!')
                            else:
                                print('任务删除失败!')
                            break
                else:
                    print('扫描任务启动失败!')
            else:
                print('任务设置失败!')
        else:
            print('任务创建失败!')
url.txt:
http://127.0.0.1/sqlilabs/Less-1/?id=1
http://127.0.0.1/sqlilabs/Less-2/?id=1
http://127.0.0.1/sqlilabs/Less-3/?id=1
http://127.0.0.1/sqlilabs/Less-4/?id=1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白帽的成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值