1 权限说明
select * from mysql.user;
这里的Y表示我前面的命令权限为root,n表示不支持root权限
导致结果:
如果为root的话,我就可操作这些命令并且可以进行跨数据库攻击,但是如果不是高权限root就无法执行这些操作
2 root权限
id=-1%27%20union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata--+
可以拿到同一个服务器上面的所有的数据库名称,通过information_schema.schemata这个表里面的 schema_name表可以拿到所有数据库的名称
2.2 获取dvwa数据库的表,列,数据信息
id=-1%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27dvwa%27--+
拿到了其他数据库的表名
获取列名:
使用column_name,x from infomation_schema.column where column_schema=' xxx' and table_name = 'xxx' 后面必须要跟表名,因为可能会涉及到其他数据库有相同的表名,所以需要限制表名字
3 闲谈
根据图片知识我们可以了解到,在当前数据库如何查别的数据库字段的信息(图中的users字段并没有在数据库dvwa中有,所以这样查---跨站注入)
4 文件读写
load_file() ----读取函数
into_outfile或into_ dump_file:导出函数
select load_file(C:/DumpStack.log):读取文件
因为这里权限不够,所以为空值
写东西:
SELECT 'x' INTO OUTFILE 'd:/www.txt';
5 路径获取
1 报错显示
2 遗留文件
这里会有路径完整信息
3 漏洞报错
某个框架的发布漏洞报错(cms,th)
4 平台配置文件
比如说php的php.init,里面就会有路径
读取配置文件:
写后门:
常见文件写入问题:
魔术开关:
magic_quotes_gpc:当开启这个魔术开关后,会对单引号(‘),双引号(“),反斜线(/),null进行转义,会强制加/在前面 -------addslashes()这个函数跟魔术开关差不多的效果
怎么绕过魔术开关呢?
1,编码
使用hex编码,mysql数据库可以解析,就可以绕过
2,宽字节注入
%df:大概就是能够将转义符号跟%df合一起变成一个文字
5 爆破(字典--无法之法)
常见路径爆破:
windows: d:/www/xfy
linux: /var/www/xfy
6 防御:
1,类型判断
is_int:设置在变量那个位置进行过滤,如果有字符进去,直接判断错误
is_array
2,自定义关键字
将变量ID里面输入的select变成了fuck
3 ,防护软件
安全狗,云盾,宝塔