目的,掌握工具的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 timedef sqlmapapi(url):data = {'url': url}# 数据包请求内容,post请求需要修改http头部的Content-Typeheaders = {'Content-Type': 'application/json'}task_now_url = 'http://127.0.0.1:8775/task/new' # 创建一个idsqlmapid = 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'):#判断在测试中就不管passelse: #不是循环之后,把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'): #循环遍历文本的urlurl.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