mysql语法总结
开学了学习时间少非常了,虽然是职高但不是计算机专业
sql注入打基础,之前都学习的sql注入原理,没有学习sql语句感觉有点迷糊,就直接拿别人的语句自己进行找网站漏洞,或者用sqlmp直接去扫,感觉很麻木不知道他是怎么交互的
学习笔记,英语不好,容易忘,写下笔记
修改密码
mysql修改密码
将root用户的密码由123456改为123
1 | mysqladmin -u root -p 123456 password 123 |
连接数据库
1 | mysql -h 地址 -u 用户 -p |
基本命令
1 | SHOW DATABASES; //查看数据库 |
# 创建数据库
1 | CREATE DATABASE admin; |
删除数据库
1 | DROP DATABASE admin; |
# 创建表和字段
1 | CREATE TABLE user (id INT,user VARCHAR(20),password VARCHAR(20)); |
user是表名
id是字段,IHT是类型数字类型
user是字段,VARCHAR(20)是字符串类型的
password 是字段,VARCHAR(20)是字符串类型的
删除表
1 | DROP TABLE 要删除的表名; |
修改字段名称
语法
1 | ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>; |
添加表记录
这个添加和上面添加表是联系在一起的
1 | INSERT INTO user VALUES (1,'admin','password'); |
user要添加的表名
第一个列的内容是1
第二个列的内容是admin
第三个列的内容是password
SELECT 查询基本命令
学习参考https://www.runoob.com/sql/sql-distinct.html
dvwa库
SELECT 语句
用法
查看全部可以用
1 | SELECT 字段,字段 FROM 表名; |
库名dvwa
表名users
SELECT之DISTINCT 语句
DISTINCT 语句过滤重复的值
用法
1
SELECT DISTINCT,字段 FROM 表名;
SELECT之WHERE 子句
WHERE 子句用于提取那些满足指定条件的记录
用法
1 | SELECT 字段,字段 FROM 表名 WHERE 字段='表数据内容'; |
列
库名dvwa
表名users
1 | SELECT * FROM users WHERE user='1337'; |
AND 和 OR 运算符
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
3.2.1AND就是两个都正确才显示,而且是在一行的数据内容都正确才可以
列
库名dvwa
表名users
1 | SELECT * FROM users WHERE last_name='Me' AND user_id=3; |
如果user_id=2就会报错
OR 只有一个正确就输入
如果user_id=2也是正确的
1 | ELECT * FROM users WHERE last_name='Me' OR user_id=2; |
ORDER BY 关键字
ORDER BY 是用来排序的
进行排序这个ORDER BY 关键字经常用于sql注入的时候,根据错误,判断有几个表
列下面有6个表
判断有几个表
ORDER BY 7就报错了,应为他只有6个表
ORDER BY 6就对了
他的使用参考https://www.runoob.com/sql/sql-orderby.html
更多参考https://www.runoob.com/sql/sql-insert.html
判断数据库或表是否存在
判断数据库存在, 则删除:
1
drop database if exists db_name;
判断数据表存在, 则删除:
1
drop table if exists table_name;
如果单纯显示是否存在数据库, 则可用
1
show databases like '数据库名';
单纯显示是否存在数据表, 则可用
1
show tables like '数据表名';
查看版本
1 | select version(); |
进行sql注入执行select version(); 语句
要执行要用到 union语句上面有说
1 | ' union select user(),2 -- |
就相当于下面这样
‘就是闭合这个2应为有2个字段所以上面那个union语句有说–注释后面的
查看版本
select version()函数
这个里面有详细的sql注入的方法
sql注入方法在我的笔记
5.手动漏洞挖掘,sql注入
查看当前目录
select @@datadir函数
sql注入方法在我的笔记
5.手动漏洞挖掘,sql注入
查看目标系统名
select @@hostname 函数
sql注入方法在我的笔记
5.手动漏洞挖掘,sql注入
CONCAT_WT()是叫函数连接起来
sql注入方法在我的笔记
5.手动漏洞挖掘,sql注入
查看information_schema库
1 | 如数据库名,数据库的表,表栏的数据类型与访问权限等。 |
查看以下所有的mysql里面就肯定有个明叫information_schema的库SHOW DATABASES; //查看数据库
进入information_schema的库
命令use information_schema
查看information_schema的库的表
命令SHOW TABLES;//查看表
查看以下information_schema的库里面的TABLES表
里面的东西非常的多
COUNT()函数
COUNT()函数是用来统计数量的
用法
1 | COUNT(列名) |
使用COUNT()函数
统计数量
load_file()函数
load_file()函数读取一个文件并将其内容作为字符串返回
列/etc/passwd文件
1 | select load_file('/etc/passwd'); |
sql注入方法在我的笔记
5.手动漏洞挖掘,sql注入