曾经觉得sqlmap自己玩得挺溜了,成果最近有一个使命,需求调用sqlmap api接口来验证存在sql注入缝隙的站点,一开端听到这个使命觉得完了,或许完结不了了。后来我去网上搜了搜相关的材料,发现关于这方面的材料的确挺少的,所以观赏了一下sqlmap的源码,大致摸清楚了怎么调用api接口。因而,笔者计划写一篇完好些的文章,才有了本文。笔者技能有限,有过错或许写的欠好的当地敬请体谅!
为什么要运用SQLMAP API?
因为SQLMAP每检测一个站点都需求敞开一个新的指令行窗口或许完毕掉上一个检测使命。尽管 -m 参数能够批量扫描URL,可是形式也是一个完毕扫描后才开端另一个扫描使命。经过api接口,下发扫描使命就简略了,无需敞开一个新的指令行窗口。
下载与装置
假如您需求运用 sqlmap api接口或许没装置 sqlmap 东西的,您需求下载装置sqlmap程序。而sqlmap是根据Python 2.7.x 开发的,因而您需求下载Python 2.7.x。
Python 2.7.x 下载地址:https://www.python.org/downloads/release/python-2715/
sqlmap 下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master
装置进程我这儿就不具体说了,不会的话能够问问度娘(https://www.baidu.com/s?wd=sqlmap%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B)
sqlmap的目录结构图如下:
sqlmap装置完结后,输入以下指令,回来内容如下图一样,意味着装置成功:
python sqlmap.py -h
sqlmap api
说了那么多,究竟api怎么运用呢?在下载装置SQLMAP后,你会在sqlmap装置目录中找到一个 sqlmapapi.py 的文件,这个 sqlmapapi.py 文件便是sqlmmap api。sqlmap api分为服务端和客户端,sqlmap api有两种形式,一种是根据HTTP协议的接口形式,一种是根据指令行的接口形式。
sqlmapapi.py的运用协助
经过以下指令获取sqlmapapi.py的运用协助:
python sqlmapapi.py -h
回来的信息:
Usage: sqlmapapi.py [options]
Options:
-h, --help 显现协助信息并退出
-s, --server 做为api服务端运转
-c, --client 做为api客户端运转
-H HOST, --host=HOST 指定服务端IP地址 (默许IP是 "127.0.0.1")
-p PORT, --port=PORT 指定服务端端口 (默许端口8775)
--adapter=ADAPTER 服务端标准接口 (默许是 "wsgiref")
--username=USERNAME 可空,设置用户名
--password=PASSWORD 可空,设置暗码
敞开api服务端
无论是根据HTTP协议的接口形式仍是根据指令行的接口形式,首要都是需求敞开api服务端的。经过输入以下指令即可敞开api服务端:
python sqlmapapi.py -s
指令成功后,在指令行中会回来一些信息。以下指令大约的意思是api服务端在本地8775端口上运转,admin token为1acac56427f272e316fceabe5ddff5a5,IPC数据库的方位在/tmp/sqlmapipc-zOIGm_,api服务端现已和IPC数据库衔接上了,正在运用bottle 结构wsgiref标准接口。
[19:53:57] [INFO] Running REST- *** ON API server at '127.0.0.1:8775'..
[19:53:57] [INFO] Admin (secret) token: 1acac56427f272e316fceabe5ddff5a5
[19:53:57] [DEBUG] IPC database: '/tmp/sqlmapipc-zOIGm_'
[19:53:57] [DEBUG] REST- *** ON API server connected to IPC database
[19:53:57] [DEBUG] Using adapter 'wsgiref' to run bottle
可是经过上面的这种 *** 敞开api服务端有一个缺陷,当服务端和客户端不是一台主时机衔接不上,因而假如要处理这个问题,能够经过输入以下指令来敞开api服务端:
python sqlmapapi.py -s -H "0.0.0.0" -p 8775
指令成功后,长途客户端就能够经过指定长途主机IP和端口来衔接到API服务端。
固定admin token
假如您有特别的需求需求固定admin token的话,能够修正文件api.py,该文件在sqlmap目录下的/lib/utils/中,修正该文件的第661行代码,以下是源代码:
DataStore.admin_token = hexencode(os.urandom(16))
sqlmap api的两种形式
指令行接口形式
输入以下指令,可衔接api服务端,进行后期的指令发送操作:
python sqlmapapi.py -c
假如是客户端和服务端不是同一台计算机的话,输入以下指令:
python sqlmapapi.py -c -H "192.168.1.101" -p 8775
输入以上指令后,会进入交互形式,如下图所示:
指令行接口形式的相关指令
经过在交互形式下输入help指令,获取一切指令,以下是该接口形式的一切指令:
api> help
help 显现协助信息
new ARGS 敞开一个新的扫描使命
use TASKID 切换taskid
data 获取当前使命回来的数据
log 获取当前使命的扫描日志[1][2][3][4][5][6][7][8][9][10][11]黑客接单网