SQL注入

用户(黑客)输入的参数(恶意的数据),被拼接到Sql语句中,作为sql语句的一部分被正常执行了
chema库中的columns表中table_schema

#这条sql语句查询的结果不为空,可以登录成功

select userid from news_users
where  username = ' ' or 1=1#' and password=' ".md5 ( 123)."l"
 


# 返回字节长度
select length('hello世界');


# 返回'hello世界'中的'世界',位置从1开始     //第六个开始两位
select substr('hello世界',6,2);


# 返回'hello世界'中的'hello'
select left('hello世界',5);


# 字符串连接
select concat('hello','世界');


# 同一个分组的多个字符串连接成一个字符串(列变行,每个数据之间以逗号分割)
select username from
pikachu.member;
select group_concat(username) from pikachu.member;


# 返回字符串中第一个字符的ascii码值 a=>97  A=>65  0=>48
select ascii('Abc');


# 将字符串转换为十六进制  A=>65=>41
select hex('ABC');


# 将 "lucy,lili,kevn" 转换为十六进制
select hex('lucy,lili,kevn');
 

系统信息函数

/*
 获取数据库系统相关信息
*/
# 1. 获取mysql的版本                             
select version();
# 2. 获取当前数据库的名称
select database();
# 3.获取当前用户
select user();
# 4. 返回数据库路径
select @@datadir;
 

渗透测试时,为什么需要关注mysql的版本?

Mysql5.0以上的数据库中可以使用information_schema数据库来查看该数据的所有库、表、列名等信息,这对数据库爆库十分有帮助,因此我们在渗透测试阶段需要对Mysql数据库的版本多进行留意,利用information_schema这个数据库获取到我们需要的信息。

使用load_file函数读取文件

1.修改mysql的配置文件my.ini。打开phpstudy窗口,"其他选项菜单"→"打开配置文件"→mysql-ini。

2.在文件中增加以下内容:secure_file_priv=''

3.在phpstudy窗口中, 点击重启按钮

4.打开mysql命令行窗口,执行命令: mysql-> select load_file('d:/hello.txt')             //默认目录斜杠/

如果没有 secure_file_priv 则新增

1.指定目录:secure_file_priv=/path/to/data

2.不限目录:secure_file_priv=''

3.禁止操作:secure_file_priv=NULL 或没有这一项内容      默认

高级sql

# 1. 条件函数
select if(10>5,'success','failed');
# 2. 休眠函数
# select sleep(3);
# 3. 随机数,生成0~1之间的随机数
select rand();
# 4.利用mysql读取文件
select load_file('D:/phpStudy/WWW/news/include/database.inc.php');

黑客的技巧

#order by原本的作用是排序
 select * from tedudb.book order by price;
本浩10169(

#黑客使用它的目的是判断查询结果中有多少列,判断有多少列

select * from tedudb. book order by 5;

如果不止5列则会报错1054
 

#如果判断出sql版本是5.5.53,就知道,存在information schema这个数据库。
#它会存储所有数据库的名称、数据库包含的表信息、数据库包含的表的列信息。#目前,我也知道当前数据库名是tedudb

 union -联合查询
 select * from tedudb.book where id1;
I

 

Sql注入的前置知识

1. information_schema库
information_schema是mysql5.0以上版本中自带的一个数据库。

2.tables表
information_schema库中的tables表中 table_schema列(存储数据库名)和table_name列(存储表名)
3. columns表
information schema库中的columns 表中 table_schema列(存储数据库名) 、table_name列(存储表名) 、column_name列(存储列名)。

 查询

select table_schema,table_name from information_schema.tables  where TABLE_SCHEMA = 'pikachu';

在information_schema.tables以TABLE_SCHEMA = 'pikachu'为条件,查询,并且只列出table_schema    table_name

select * from information_schema.tables;                                 查找所有表并且展现所有表

select table_schema,table_name from information_schema.tables;            查看所有表,但只显示所需的内容                   

# 1.获取news数据库的所有表名

select table_name from information_schema.tables where table_schema='news';       库名为news

在表里面,搜索 库名为news的字段    并显示表名   

# 2.获取news数据库的news_users表的所有字段名

select column_name from information_schema.columns where table_schema='news' and table_name='news_users';            

查字段用column   底下的  colum_name  

这时候出来的东西都是字段

#3.获取news数据库的news_users表的username,passowd字段的数据

select username,password from news.news_users;

取出字段内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值