1、sqlmap检索DBMS信息
sqlmap检索DBMS banner
获取后端数据库banner信息
参数 --banner或者-b
sqlmap检索DBMS当前数据库
获取当前数据库名
- 参数 --current-db
sqlmap检索DBMS当前主机名
获取主机名
- 参数 --hostname
sqlmap检索DBMS用户信息
sqlmap探测当前用DBA
探测当前用户是否是数据库管理员
- 参数 --is-dba
sqlmap枚举DBMS用户密码
Sqlmap会先列举用户,再列举用户密码Hash值。()
- 参数 --passwords
自动默认选项
- –batch 自动默认选项
sqlmap枚举DBMS用户
获取DBMS所有用户
- 参数 --users
sqlmap枚举DBMS权限
- 参数:–privileges
当前用户有读取包含了数据库管理系统中用户信息的系统表的权限时使用这一参数可以列举数据库管理系统中用户的权限。通过用户权限可以判断哪些用户是管理员。
若想只枚举特定用户的权限使用参数"-U"指定用户,可用"CU"来代表当前用户。(current-user)
python sqlmap.py -u “http://127.0.0.1/sqli/Less-1/?id=1” --privileges U root
sqlmap枚举信息
sqlmap列举数据库名
列举数据库名称
- 参数 --dbs
sqlmap枚举数据库表
列举数据库表名
- 参数: --tables
- -D 数据库名字 指定具体数据库
sqlmap枚举数据表列
- 参数 – columns
sqlmap枚举数据值
- 参数 --dump
sqlmap枚举schema信息
用户可用此选项列举数据库管理系统的模式。模式列表包含所有数据库、表、列、触发器 和他们各自的类型。 同样地,可使用参数–exclude-sysdbs排除系统数据库。
- 参数 --schema
sqlmap检索数据表数量
如果用户只想知道表的条目数,则可以使用此参数
- 参数 --count
sqlmap获取数据信息
- 参数 --start --stop
–start 1 --stop 3 返回当前数据库表的前三条记录
sqlmap设置条件获取信息
- 参数 --where
python sqlmap.py -u “http://127.0.0.1/sqli/Less-1/?id=1” -D security -T users --where=“id>3” --dump
sqlmap暴力破解数据
暴力破解表名
- 参数 --common-tables
暴力破解中使用的文件路径在…\sqlmap\sqlmapproject-sqlmap-3b7dd2c\txt这个文件夹下是检索的所有项目
有些情况下用–tables不能列出数据库中表名来比如:
1.版本小于5.0的MySQL没有information_schema表
2.数据库用户权限过低无法读取表名
sqlmap检索所有信息
返回所有的检索信息
- 参数 -a 或者–all
返回所有的检索项目,一般不用,容易被发现
2、SQL注入原理
介绍SQL注入
SQL注入就是指web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数代入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。
SQL注入漏洞的产生需要满足两个条件
- 参数用户可控
- 参数带入数据库查询,传入的参数拼接到SQL语句,并且带入数据库查询
SQL注入的危害
- 1.数据库敏感信息泄露
- 2.页面被窜改
- 3.数据库被恶意操作
- 4.服务器被远程控制
SQL注入的分类
- 根据注入位置数据类型可将SQL注入分为两类:数字型和字符串型
– 字符串注入
– 数字注入
- 根据返回结果可以分为
– 显错注入(error-based)
– 盲注(boolean/time-based blind)
SQL注入的形成原因:
- 1.数据与代码未严格分离
- 2.用户提交的参数数据未做充分检查过滤及被带入到SQL命令中,改变了原有SQL命令的’语义’ ,且成功被数据库执行
3、SQL注入过程
火狐浏览器插件安装
hackbar破解安装
先下载火狐浏览器和上面的插件:
安装成功:包含多种工具
关闭自动更新:
4、SQL注入
GET和POST请求
- GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL 和传输数据,多个参数用&连接。 (大多数网站采用GET方式)
- POST提交:把提交的数据放置在是HTTP包的包体中。 (POST方式更安全)
因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。
5、get基于报错的SQL注入
通过url中修改对应的ID值,为正常数字、字符(单引号,双引号,括号)、反斜线来探测url中是否存在注入点。
6、get基于报错的SQL注入利用
- 1.order by判断字段数
- 2.利用union select联合查询,获取表名
- 3.利用union select联合查询,获取字段名
- 4.利用union select联合查询,获取字段值
1、order by判断字段数
order by测试出数据库中含有3个字段
2、利用union select联合查询,获取表名
获取表名
3、利用union select联合查询,获取字段名
4、利用union select联合查询,获取字段值
获得字段值,即账号密码: