WEB攻防-通用漏洞SQL注入MYSQL跨库ACCESS偏移
知识点:
1、脚本代码与数据库前置知识;
2、Access数据库注入-简易&偏移;
3、MYSQL数据库注入-简易&权限跨库;
前置知识:
-SQL注入漏洞产生原理分析
-SQL注入漏洞危害利用分析
-脚本代码与数据库操作流程
-数据库名,表明,列名,数据
-数据库类型,数据库用户,用户权限
ASP+Access-简易注入-字典猜解
PHP+MYSQL-跨库注入-权限属性
脚本代码在实现代码与数据库进行数据通讯时(从数据库中取出相关数据进行页面显示),将定义的SQL语句进行执行查询数据时。其中的SQL语句能通过参数传递自定义值来实现控制SQL语句,从而执行恶意的SQL语句,可以实现查询其他数据(数据库中的敏感数据,如管理员账号密码)。这一个过程就叫做SQL注入漏洞。
SQL语句查询,删除,添加,修改等操作
SQL语句有写法规则,也就是说必须符合正确的写法才能执行成功
漏洞产生根本条件:可控变量(参数传递) 特定函数
SQL注入为通用漏洞,可以产生在任何语言及网站
可能产生漏洞的地址:
使用union 配合1~22这些数字,可以探测出,该sql语句查询了22个字段,使用order by 22 不报错,使用order by 23报错
此时的表名和列名都是猜的:
由于Access数据库特性导致这个SQL注入是需要借助字典去猜解表名和列名的,那么就会出现表名或列名猜解不到,可以自定义社工字典或采用偏移注入;
ASP+Access-偏移注入-报错显示
偏移注入就是解决表名已知,列名未知的情况
通过1~*,可以判断出*代表多少个字段
SQL注入攻击流程:
1、猜测数据库类型;
2、根据类型选择思路;
ACCESS 独立存在
数据库名
表名
列名
数据
MYSQL 统一管理
数据库A=网站A=数据库用户A
表名
列名
数据
网站B=数据库B=数据库用户B
网站C=数据库C=数据库用户C
就有可能出现最高数据库用户=root用户
为了网站和数据库的安全性,MYSQL内置有ROOT最高用户,划分等级,每个用户对应管理一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。
MYSQL两种思路:
1、非ROOT的注入攻击:常规类的猜解;
2、ROOT用户的注入攻击:文件读写操作,跨库注入查询等;
黑盒测试中可以采用user()获取当前用户权限,白盒中看连接用户即可。
MYSQL5.0以上版本:自带的数据库名infomation_schmea,用来存储数据库下数据库名及表名,列名信息的数据库,可以通过查询它,来获取数据库用户、表、列等信息;
information_schema:存储数据库下的数据库名及表名、列名信息的数据库
infomation_schema.tables:记录表名信息的表
infomation_schema.columns:记录列名信息的表
获取相关数据:
1、数据库版本-看是否符合infomation_schema查询-version();
2、数据库用户-看是否符合ROOT型注入攻击-user();
3、当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os();
4、数据库名字-为后期猜解指定数据库下的表、列做准备;
ROOT类型攻击-猜解数据,文件读写,跨库查询
获取当前数据库下面的表名信息:
获取表名sy_adminuser的列名信息:
获取指定数据:
跨库注入:实现当前网站跨库查询其他数据库对应网站的数据
1、获取当前mysql下的所有数据库名;
2、获取数据库名为xhcms下的表名信息;
3、获取数据库名为xhcms下的表manage写的列名信息;
4、获取指定数据;
示例:
参数base64加密
使用变量猜测表名,
payload set:1
payload type:Simple list
然后通过load按钮加载字典
然后使用payload processing给参数加密,add->base64
选择intruder->start attack