SQL注入 SqlmapApi快速上手

涙をこらえて 笑顔でさようなら せつないよね

sqlmapapi使用的是bottle web框架,与flask类似,但是更加精简。

首先开启sqlmapapi服务

sqlmapapi.py -s

输出结果大致如下:

C:\Users\Administrator\Desktop>sqlmapapi.py -s
[15:42:37] [INFO] Running REST-JSON API server at '127.0.0.1:8775'..
[15:42:37] [INFO] Admin ID: 1624e1c613cf56c1afe4241b28487b4d
[15:42:37] [DEBUG] IPC database: 'c:\users\administrator\appdata\local\temp\sqlmapipc-fh0y03'
[15:42:37] [DEBUG] REST-JSON API server connected to IPC database
[15:42:37] [DEBUG] Using adapter 'wsgiref' to run bottle
[15:42:41] [DEBUG] Created new task: '4ebbb121a16a47ab'

根据输出结果,可以明白bottle开启的服务地址为

http://127.0.0.1:8775

Admin ID 是用来管理 task 所用的,每次开启 sqlmapapi 都会改变,可以通过修改源码的方式将其固定,或是写入文件供其他程序读取。

这里只是开启了服务,进一步需要创建任务,每个注入点对应不同的id。

创建任务方法如下:

r = requests.get(url='http://127.0.0.1:8775/task/new')
print r.json()

此时会返回一个json

{u'success': True, u'taskid': u'4ebbb121a16a47ab'}

代表创建任务成功,后面的id值就是创建任务的时候该任务对应的唯一id值。

注意:每次发送请求返回的id值都是不一样的。

然后发送一个 链接过去 ,sqlmapapi自动判断是否存在注入。

我这里先用phpstudy搭建apache环境,安装好了sqli labs

使用的链接是

url = 'http://127.0.0.1/sqli/Less-1/?id=1'

代码实现如下:

import requests,json,time



def scan_sql(url):

    r = requests.get(url='http://127.0.0.1:8775/task/new')
    task_id = r.json()['taskid']


    sqlmap_set = 'http://127.0.0.1:8775/option/%s/set' % task_id
    sqlmap_url = 'http://127.0.0.1:8775/scan/%s/start' % task_id
    sqlmap_status = 'http://127.0.0.1:8775/scan/%s/status' % task_id
    sqlmap_result = 'http://127.0.0.1:8775/scan/%s/data' % task_id

    set = requests.post(url=sqlmap_set,data=json.dumps({'url':url}), headers={'Content-Type':'application/json'})
    scans = requests.post(url=sqlmap_url,data=json.dumps({'url':url}), headers={'Content-Type':'application/json'})

    r = requests.get(sqlmap_status).json()['status']
    print r

    while 1:
        if requests.get(sqlmap_status).json()['status'] == 'running':
            print 'is running'
            time.sleep(10)
        else:
            print requests.get(sqlmap_status).json()['status']
            time.sleep(10)
            re = requests.get(url=sqlmap_result)
            print re.json()
            #return requests.get(sqlmap_result).content
坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%