SQL注入基础(更新中)

一、SQL原理及语句

1.常见数据库

Mysql:Linux Windows

Access:Windows

Oracle:商业级

Mysql的组成:

数据库->若干数据表(table)->若干字段/列名(属性)->若干数据(元组)

2.数据库的查询流程

SQL注入基础(更新中)

3.Mysql默认数据库

information_schema:相当于日志数据库,保存了Mysql中所有数据库的数据信息

Sys(5.5之后添加):权限较高

4.基础语言

create database test;   #创建数据库
show databases; # 查看数据库
use test;   #使用指定数据库
#创建数据表
create table user(
    id int(11),
    name varchar(255);
)
show tables;  # 展示数据表
insert into users values(1,admin),(2,root); # 插入数据
select * from users;    #显示所有数据
select * from information_schema.users;   #查询到所有数据库中的users的数据
select database();   #查询当前数据库
select version();   #查询版本
select user();  # 查询权限

# 从第a行到b行数据
select * from user limit a,b; 
update user set name='admin123' where id =1; # 数据库的更新
delete from user where username= 'dnm';   #删除数据

二、SQL注入的类型

1.原理

由于后端对于用户输入内容没有进行过滤,导致用户提交的代码可以在后端进行执行

2.常见类型

SQL注入基础(更新中)

3.非常见类型

无列名注入:对于字段名字未知,通过操作让字段名字可控制

sys数据库注入:需要root权限

堆叠注入:增删改查可以使用

宽字节注入:编码不同,导致不同编码可以绕过WAF

三、字符型注入和数字型注入

1.常规流程

SQL注入基础(更新中)

1.尝试闭合sql语句,判断注入类型,过滤类型

2.联合查询返回信息,union(需要满足每个字段的个数要对应,即联合数据前的格式和后面的数据格式一样),相当于查询数据库的名字

select * from test where user='admin123' union select database(),1;

3.在information_schama查询对应的列表名,查询关系(table)的名字

select * from test where user='admin132' union select table_name from information_schema.tables where table_schama = database();

4.找到表名之后,查询每一列的名字

2.常用函数与语句

1. union select

​ 用于联合查询得到多个数据

2.group_concat

​ 打印查询的字符串数据,汇总于一行

4.数字型注入

select * from test where id=1;

5.字符型注入

select * from test where user='admin'

6.注入类型的FUZZ

  1. 单引号报错很有可能是 id = '1'
  2. 双引号报错很有可能为 id = "1"

四、布尔盲注

五、Sqlmap的使用

六、联合注入

七、报错注入

八、Mysql提权


标签:更新中
版权属于:Jtripper 所有,转载请注明文章来源。

本文链接: https://www.jtripperbacaf.com/index.php/archives/45/

赞 (0)

评论区

发表评论

14+2=?

暂无评论,要不来一发?

回到顶部