sqlmapapi的基本使用和源码阅读

很多工程师都使用过sqlmap这个工具,那么你知道sqlmapapi是什么吗?顾名思义,就是sqlmap的接口吗?
其实你可以把sqlmapapi理解为云的概念,本质上就是用web包装了一下sqlmap,从而可以通过网络调用,sqlmap一般情况下只能在本地命令行使用,通过sqlmapapi新瓶装旧酒,味道就不一样了。

在我看来其核心差不多就是这块代码,君仔细一看,这不就是在进程内调用嘛,没错。
在这里插入图片描述

阅读源码之前,先看一下sqlmapapi的使用方法。
python sqlmapapi.py -h

Usage: sqlmapapi.py [options]

Options:
  -h, --help            show this help message and exit
  -s, --server          Run as a REST-JSON API server
  -c, --client          Run as a REST-JSON API client
  -H HOST, --host=HOST  Host of the REST-JSON API server (default "127.0.0.1")
  -p PORT, --port=PORT  Port of the the REST-JSON API server (default 8775)
  --adapter=ADAPTER     Server (bottle) adapter to use (default "wsgiref")
  --username=USERNAME   Basic authentication username (optional)
  --password=PASSWORD   Basic authentication password (optional)

启动sqlmapapi 的web服务:
$ python sqlmapapi.py -s

使用postman作为客户端进行联调和测试。
在这里插入图片描述
也可以使用python sqlmapapi.py -c
在这里插入图片描述

在这里插入图片描述

self.process = Popen([sys.executable or "python", "sqlmap.py", "--api", "-c", configFile], shell=False, close_fds=not IS_WIN)

sqlmapapi中使用的数据库

创建了一个临时文件


    _, Database.filepath = tempfile.mkstemp(prefix=MKSTEMP_PREFIX.IPC, text=False)
    os.close(_)

使用这个临时文件作为sqlite的存储文件。

在这里插入图片描述
在这里插入图片描述
建表语句如下:
创建了三个表logs、data、errors表
CREATE TABLE logs(id INTEGER PRIMARY KEY AUTOINCREMENT, taskid INTEGER, time TEXT, level TEXT, message TEXT)

CREATE TABLE data(id INTEGER PRIMARY KEY AUTOINCREMENT, taskid INTEGER, status INTEGER, content_type INTEGER, value TEXT)

CREATE TABLE errors(id INTEGER PRIMARY KEY AUTOINCREMENT, taskid INTEGER, error TEXT)
在这里插入图片描述
这三个表在什么时候使用到了呢?
logs表:
先看下面的代码,如果sqlmap运行时候指定了–api,那么会移除原来的LOGGER_HANDLER,改为把日志记录到数据库中。
在这里插入图片描述
在这里插入图片描述
然后再看data表和errors表
如果配置了–api,那么标准输出和标准错误输出都会被修改
在这里插入图片描述
StdDbOut是什么呢?
在这里插入图片描述
总结来说,如果有–api参数,会把日志,标准输出,标准错误输出统统都改到数据库里面去了。


一些引申的想法:
1、使用sqlmapapi实现自动化?

2、sqlmapapi的代码也不是完美,例如删除单个任务的时候,并没有考虑进程的状态。
DataStore.tasks.pop(taskid) 之前没有调用 DataStore.tasks[key].engine_kill()


参考
https://www.freebuf.com/articles/web/204875.html

Guess you like

Origin blog.csdn.net/lineuman/article/details/121713661