注入/跨库查询/文件读写/常见的防护原理 详细图解
注入/跨库查询/文件读写/常见的防护原理 详细图解
目录
高权限注入及低权限注入
MySQL中分为:root(最高权限)、普通用户
数据库中可以有多个库,每个库有各自的表,每个表有各自的列
数据库---网站----数据库用户
一个数据库的普通用户只能操作自己的数据库
一个数据库的超级用户(root)不仅能操作自己用户,还能跨库操作其他数据库
information_schema 表特性,记录库名,表名,列名对应表
information_shema.schemata 所有库
information_schema.tables 所有表名
information_schema.columns 所有的列名
跨库查询:
less-2
获取所有数据库名:
?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata#
获取security(指定数据库)下所有表
?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'#
获取security(指定数据库)下emails(指定表)的所有列
?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='emails'#
获取emails表所有信息
文件读写操作
MySQL特有函数:
load_file():读取函数
into outfile 或 into dumpfile :导出函数
流程:
先找路径------再执行文件的读写操作
找路径:
方法一:
单引号爆出路径(报错显示)
错误参数值爆路径(报错显示)
现在很多错了都没有回显了
方法二:
通过搜索引擎获取(自我感觉效率低)
百度inurl:iqiyi.com warning
inurl:iqiyi.com "error"(或者“fatal error”)
方法三:
通过遗留的测试文件(扫描工具扫描)
/test
.php
/ceshi
.php
/info
.php
/phpinfo
.php
/php_info
.php
/1
.php
/x
.php
(上图来自百度)
方法四:
通过注入点来读取文件操作来读取搭建网站平台的配置文件来获取路径
方法五:
通过burpsuite、sqlmap等扫描工具扫 描得到网站的map
方法六:
漏洞报错,知道网站是用什么cms或者框架进行搭建的,用搜索引擎去找到对应的爆路径方式,比如phpcms 爆路径
方法七:
爆破:无任何突破点,就可以运用一些常见固定的可能安装位置生成字典,对目标网站进行爆破
eg:
windows:d:/www/root/xxx/
linux:/var/www/xxx
知道路径后,再执行文件的读写操作
我自己新建的一个hjh.txt文件
?id=-1 union%20select 1,2,load_file(%27D:/BaiduNetdiskDownload/phpstudy/phpstudy_pro/hjh.txt%27)
(%20是换行,%27是引号,有路径时,防止转义可以将\改为\\或者/)
文件的写入:
可能遇到的问题:
问题一:
魔术引号(magic_quotes_gpc = On)
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串,预定义字符有:
单引号(’)双引号(”)反斜杠(\)NULL
可以使用编码或宽字节绕过(附带网盘下载)
链接:https://pan.baidu.com/s/1cW_bMM3tMtNroEb-oMyPkw
提取码:hj12
问题二:
问题三:
问题四:
写入:
?id=-1 union select 1,'<?php phpinfo();?>',3 into outfile 'D:/BaiduNetdiskDownload/phpstudy/phpstudy_pro/hjh.php'--+
文件已经写入到指定位置了
常见的防护:
方法一:
用if判断语句进行过滤
方法二:
把传入的某些带有注入可能的词进行替换成其他指定词
- 点赞
- 收藏
- 关注作者
评论(0)