开学了学习时间少非常了,虽然是职高但不是计算机专业

sql注入打基础,之前都学习的sql注入原理,没有学习sql语句感觉有点迷糊,就直接拿别人的语句自己进行找网站漏洞,或者用sqlmp直接去扫,感觉很麻木不知道他是怎么交互的

学习笔记,英语不好,容易忘,写下笔记

修改密码

mysql修改密码
将root用户的密码由123456改为123

1
mysqladmin   -u root -p 123456 password 123

连接数据库

1
mysql -h 地址 -u 用户 -p

在这里插入图片描述

基本命令

1
2
3
SHOW DATABASES; //查看数据库
use 要进入的数据库名;//选择数据库
SHOW TABLES;//查看表

# 创建数据库

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. 判断数据库存在, 则删除:

    1
    drop database if exists db_name;
  2. 判断数据表存在, 则删除:

    1
    drop table if exists table_name;
  3. 如果单纯显示是否存在数据库, 则可用

    1
    show databases like '数据库名';   
  4. 单纯显示是否存在数据表, 则可用

    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
2
3
4
5
6
7
8
9
10
如数据库名,数据库的表,表栏的数据类型与访问权限等。
再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,
每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在 information_schema里面。

information_schema的表schemata中的列schema_name记录了所有数据库的名字
information_schema的表tables中的列table_schema记录了所有数据库的名字
information_schema的表tables中的列table_name记录了所有数据库的表的名字
information_schema的表columns中的列table_schema记录了所有数据库的名字
information_schema的表columns中的列table_name记录了所有数据库的表的名字
information_schema的表columns中的列column_name记录了所有数据库的表的列的名字

查看以下所有的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注入