【安全狐】SQL注入_渗透小白必看

4 篇文章 1 订阅
2 篇文章 0 订阅

[ SQL注入 ] (SQL:结构化查询语言,Structured Query Language)即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SQL注入方式:

提交方式分类:uGET注入 uPOST注入 uCookie注入 uHTTP头部注入

注入点类型分类:u数字型注入 u字符型注入 u搜索型注入

按照执行效果来分类:u基于布尔的盲注 u基于时间的盲注 u基于报错注入

u联合查询注入   u堆叠注入       u宽字节注入

一、SQL基本语法学习

一些最重要的 SQL 命令

SELECT - 从数据库中提取数据

UPDATE - 更新数据库中的数据

DELETE - 从数据库中删除数据

INSERT INTO - 向数据库中插入新数据

CREATE DATABASE - 创建新数据库

ALTER DATABASE - 修改数据库

CREATE TABLE - 创建新表

ALTER TABLE - 变更(改变)数据库表

DROP TABLE - 删除表

CREATE INDEX - 创建索引(搜索键)

DROP INDEX - 删除索引

进入数据库:在CMD中cd到C:\phpStudy\PHPTutorial\MySQL\bin

如图,输入mysql -u root -p ,再输入密码即可进入mysql

1.查看所有库

SQL>show databases;

2.查看所有表 SQL>shoe tables;

3.查看表结构

SQL>DESC users;

3.查询所有列SQL>SELECT * FROM users;

3.查询指定列

SQL>SELECT user,password FROM user;

4.查询指定行

SQL>SELECT user FROM users WHERE user='admin';

5.使用逻辑操作符号

SQL>SELECT user FROM users WHERE user like ‘a%’;

5.1.使用like操作符(%,_ )

%表示-一个或多个字符,_表示- 一个字符,[charlist]表示字 符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 .

SQL>SELECT * FROM emp WHERE ename like 'S_T%';

5.2.在where条件中使用In

SQL>SELECT * FROM emp WHERE job IN ('CLERK'ANALYST');

5.3.查询字段内容为空/非空的语句

SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;

二、SQL注入流程

1. 检测是否存在SQL注入漏洞:u手工测试 u扫描器

2. 探测后台数据库类型、属性:u采用不同的数据库注入策略包来进行进一步的取证和渗透

3. SQL注入: u数值型、字符型 u搜索型、错误型 u杂项型

3.1.判断是否存在注入,注入是字符型还是数字型

3.2.猜解当前数据库名>猜解数据库的长度>猜解数据库的名字

3.3.猜解数据库中的表名>猜解当前库中有多少个表(表的数量)→猜解表的长度>猜解表的名字

3.4.猜解表中的字段名>猜解当前表中有多少个字段(字段的

数量) >猜解字段的长度→猜解字段的名字

3.5.猜解数据

三、SQL注入(DVWA中的低中高)

(一)安全等级为Low

1.判断是否存在注入,注入是字符型还是数字型

查看源码可知注入为字符型

手工测试:1’ and ‘1’=‘1

1’ and ‘1’=‘2

2.猜解SQL查询语句中的字段数

1' order by 3#

字段数为2

3.确定显示位置

4.获取当前数据库

5.获取数据库中的表

6.获取表中的字段名

1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

7.获取数据

(二)安全等级为Medium

1.判断是否存在注入,注入是字符型还是数字型

查看源码可知注入为数字型

手工测试:(用burp抓包)1 and 1=1

1’ and ‘1’=‘2

2.猜解SQL查询语句中的字段数

1 order by 3#

字段数为2

3.确定显示位置

4.获取当前数据库

5.获取数据库中的表

6.获取表中的字段名

1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273#

7.获取数据

(三)安全等级为Medium

1.判断是否存在注入,注入是字符型还是数字型

查看源码可知注入为数字型

手工测试: 1’ or 1=1#

2.猜解SQL查询语句中的字段数

1 order by 3#

字段数为2

 

3.确定显示位置

4.获取当前数据库

5.获取数据库中的表

6.获取表中的字段名

1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

7.获取数据

SQL注入流程:

1、判断是否存在注入,注入是字符型还是数字型

2、猜解SQL查询语句中的字段数

3、确定显示位置

4、获取当前数据库

5、获取数据库中的表

6、获取表中的字段名

7、获取数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值