python3.poc。sqlmap&Tamper&Pocsuite

发布于:2024-04-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

目的,掌握工具的api接口,框架工具二次开发

---sqlmap的api接口:https://www.freebuf.com/articles/web/204875.html 

应用:配合前期信息收集的到可能存在注入点的地方,批量化的去扫描

#开发当前项目过程:(利用 sqlmapapi 接口实现批量 URL 注入安全检测)

---1.创建新任务记录任务 ID @get("/task/new")

---2.设置任务 ID 扫描信息 @post("/option/<taskid>/set ")

---3.开始扫描对应 ID 任务 @post("/scan/<taskid>/start")

---4.读取扫描状态判断结果 @get("/scan/<taskid>/status")

---5.如果结束删除 ID 并获取结果 @get("/task/<taskid>/delete")

---6.扫描结果查看@get("/scan/<taskid>/data")

1.创建新任务记录任务 ID @get("/task/new")

---sqlmap相关参数:python sqlmapapi.py -h:-s为api服务端运行

开启api接口

注意是sqlmapapi

之后在python里面去访问,就出现了sqlmapapi的idha

2.设置任务 ID 扫描信息 @post("/option/<taskid>/set ")

因为是json格式,所以导入json模块之后,去taskid的值

#3设置任务id的配置信息(扫描信息)

@post("/option/<taskid>/set "),这里扫sqllab的靶场 

data传入的参数都是以json格式,所以在后面传参进去要用到json方法,

要将post提交的data从python对象编码转换为json对象

构建post要提交的数据,以json的形式构建请求(POST请求需要修改HTTP头中的Content-Type字段为application/json),post提交的键值对为要访问的靶场的url

4.启动对于ip的扫描任务

这就是复制一下上面的改一下就可以

5.获取对应的扫描状态

如果这样写代码的话,就会一直都是在扫描中,而不是结束,因为这个代码运行一次就会创建一个id,运行就是刚在扫描

优化后的完整代码

import requests
import json
import time

def sqlmapapi(url):
    data = {
        'url': url
    }
    # 数据包请求内容,post请求需要修改http头部的Content-Type
    headers = {
        'Content-Type': 'application/json'
    }
    task_now_url = 'http://127.0.0.1:8775/task/new'  # 创建一个id
    sqlmapid = requests.get(task_now_url)
    # print(sqlmapid.json()['taskid'])#获取任务的id号
    task_id = sqlmapid.json()['taskid']
    if 'success' in sqlmapid.content.decode('utf-8'): #判断成功是否在创建这个id后的网页回显数
        print('sqlmapapi id success')
        task_set_url = 'http://127.0.0.1:8775/option/' + task_id + '/set'  # 设置id扫描配置信息
        task_set_resp = requests.post(task_set_url, data=json.dumps(data), headers=headers)
        if 'success' in task_set_resp.content.decode('utf-8'):  #判断成功是否在创建这个id后的网页回显数
            print('sqlmapapi set success')
            task_set_url = 'http://127.0.0.1:8775/scan/' + task_id + '/start'
            task_set_scan = requests.post(task_set_url, data=json.dumps(data), headers=headers)
            if 'success' in task_set_scan.content.decode('utf-8'):
                print('sqlmapapi start success')
                while 1: #一直循环
                    task_set_url = 'http://127.0.0.1:8775/scan/' + task_id + '/status'
                    task_set_tus = requests.get(task_set_url)
                    if 'running' in task_set_tus.content.decode('utf-8'):#判断在测试中就不管
                        pass
                    else: #不是循环之后,把url写道一个文件里面,知道有sql注入
                        task_data_url = 'http://127.0.0.1:8775/scan/' + task_id + '/data'
                        task_data_tus = requests.get(task_data_url)
                        poc = (task_data_tus.content.decode('utf-8'))
                        f = open('sqlurl.txt', 'a')
                        f.write(url + '\n')
                        f.close()
                        break #跳出循环
        time.sleep(0.1)


if __name__ == '__main__':
    for url in open('url.txt'): #循环遍历文本的url
        url.strip()
        sqlmapapi(url)

这个可以结合爬虫,爬取指定url进行联动

Pocsuite3 漏扫框架二次开发 POC/EXP 引入使用

---参考:https://www.freebuf.com/articles/people/162868.html

---下载:https://github.com/knownsec/pocsuite3/releases(注意下python3版本的) 

根据里面的模板,可以添加上自己的poc进去,实现二次开发,自己的漏洞库

jian

kang


网站公告

今日签到

点亮在社区的每一天
去签到