当前位置: 首页 > news >正文

WEB漏洞-SQL注入之MYSQL注入

跨库注入的原理:针对同一IP下的不同域名

同一服务器下

网站A对应数据库A

网站B对应数据库B

网站C对应数据库C

如果某网站的存在注入点,注入点的权限恰好是root权限,也就是最高权限,那么可以通过跨库注入获取其他网站的数据库信息

跨库注入的步骤

1.查询服务器下所有数据库名称

        使用information_schema数据库,这个库中有schemata表记录了当前服务器的所有数据库名称,有tables记录当前数据库的所有表,有columns记录当前表的所有列。我们先找到所有数据库的名称:select * from schemata

比如:select * from users where id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata

2.找到该网站对应的数据库名称后,获取指定表名

        比如:select * from users where id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='指定数据库名'

3.找到指定表名后,获取列名信息

        比如:select * from users where id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='指定表名' and table_schema='指定数据库名'

这里有两个限制条件是因为不同数据库可能会有相同的表名,所以要对数据库做限制

4.根据表名和字段名,查询指定数据

        比如:select * from users where id=-1 union select 1,name,password from '指定数据库名'.'指定表名'

要注意表名前面要带有数据库名,因为不同数据库可能会有相同的表名

文件读写操作的小知识

load_file()  读取文件内容

into outfile  写入文件

比如select load_file('你的文件路径'),就可以获取到文件的内容

select 'x' into outfile('文件路径'),就可以创建一个文件,同时写入x

读写操作的意义

1.读取网站或系统的敏感信息,系统固定路径或者网站随机目录

2.编写后门文件shell

文件读写前提条件

1.用户权限足够高,尽量具有root权限。

2.secure_file_priv 选项不对文件读写权限限制

(打开mysql文件夹下的my.ini,在[mysqld]的下一行单独加一行secure_file_priv='')

3.知道绝对物理路径

4.能够使用联合查询(sql注入时)

路径获取常见方法

        报错显示:网站报错的时候,会泄露地址信息

        遗留文件:比如phpinfo(),开发者为调试的时候遗留的文件等,phpinfo里面的script_filename就会有文件路径

        CMS:比如wordpress,zblog的绝对路径

        漏洞报错,平台配置文件,爆破等

自己实战需注意

1.给文件读写权限

2.my.ini添加secure_file_priv =

3.双斜杠防止转义(可以把路径进行16进制HEX编码,就不需要考虑斜杠)

4.--+或者%23注释limit

相关防注入

魔术引号(自带防御):php内置安全机制,在php.ini中可以找到magic_quotes_gpc这个选项,on就是启动,false就是关闭。作用是在输入数据中含单引号('),双引号("),反斜线(\)与NULL字符的前面加上反斜线,防止sql注入

代码判断(内置函数):is_array,is_int,判断输入的数据,如果不是就直接拦截。点对点拦截,比较少,但是一旦有,将很难注入成功

自定义关键字(select):$id = str_replace('select','fuck',$id),将id中的select换成fuck

WAF防护软件:安全狗,宝塔。大部分原理都是过滤关键字

如果面对低版本mysql,5.0以下的,可以用sqlmap字典爆破 

http://www.lryc.cn/news/419066.html

相关文章:

  • mysql 查询 from a, b 和 a left join b 有什么区别
  • 禁用ssh 22端口
  • C++基础编程的学习3
  • Java中的Optional类:解锁优雅编程的秘密
  • 聆思CSK6大模型开发板语音控制风扇(上)
  • 代码随想录算法训练营第四十一天 | 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机II、123. 买卖股票的最佳时机III
  • 延时队列与redis and rabbitmq
  • 数据结构--单链
  • 春秋云镜CVE-2023-38836
  • Linux 进程概念
  • 【秋招突围】2024届校招-米哈游笔试题-第二套
  • tklog v0.0.9 :Rust灵活高效日志管理
  • 长安链java-sdk打成jar包部署找不到配置文件,springBoot项目制作Docker镜像
  • AI问答:理解软件开发中的几个概念 / 软件逆向、加密、加固、脱壳、反编译
  • 第十一届MathorCup高校数学建模挑战赛-C题:基于有限差分法的散热机理建模与海底数据中心优化设计
  • 【java】常量
  • react如何使用useContext + TS 自定义hooks
  • 【网络安全学习】SQL注入03:如何防止SQL注入
  • linux利用crontab捕获iotop
  • android13 关闭selinux 临时关闭或者永久关闭
  • JetBrains GoLand单元测试不支持单个单元测试case执行
  • 基于STM32设计的盆栽种植自动管理系统(微信小程序)(201)
  • 白骑士的PyCharm教学实战项目篇 4.1 Web应用开发
  • Linux与Docker常用运维命令一览
  • 怎样在 SQL 中创建视图(VIEW),以及视图的作用和优势是什么?
  • Tomcat 使用和配置文件(详解)
  • html+css+js+jquery实现一个 飘零的树叶
  • 鸿蒙(API 12 Beta3版)【时域可分层视频编码】 音视频编码
  • 一个java类实现UDP代理转发
  • K8s问题案例分析