从0开始学SQL注入(超详细)

前言:

终于是吧cracer的渗透教程看完了,
也终于是有点时间来整理这些凌乱的笔记了,
关于SQL注入后面会陆续把写的笔记整理成文章,敬请期待!
有什么疑问可以评论也可以直接私信

杂谈:

送给萌新的几句话:
SQL注入对于想学安全方面的人来说算是一个很基础的知识,
所以不要以为学完了SQL注入自己就是大神了,路还远着呢。

学习网络安全方面,实操很重要!很重要!很重要!
所以这方面的学习一定要以理论和实操相结合的方式,这样你才会真正有所收获和成长。

SQL注入方面的实操
线上可以去CTFhub,墨者,或者一些免费的线上靶场练练手(这里不提供了,自己勤快点)
线下可以自行搭建实验靶场,然后找诸如DVWA,Sqlilabs,等等环境(多动手很有用的)
怎么搭靶场可以参考我前面写的一篇文章

一.SQL注入原理:

进入网页里请求的数据要进入到数据库进行查询,如果查询语句不做限制就极有可能泄露数据库的数据

二.SQL注入分类:

按查询的类型分类:

  • 数字型SQL注入:查询语句是这样的:select * from user where id=1
  • 字符型SQL注入:查询语句是这样的:select * from user where name='lihua’
  • 搜索型SQL注入:查询语句是这样的:select * from user where search like '%1%'

按http的提交方式可以分为:

  • GET型注入
  • POST型注入
  • coookie型注入
  • http请求头注入
  • UserAgent注入

按效果可以分为:

  • 报错注入
  • 联合查询注入
  • 盲注(又可分为布尔盲注和时间盲注)
  • 堆查询注入

三.注入步骤:

1.首先判断是否有注入(例如利用1=1,1=2)
2.判断注入类型(例如加上‘’看是否报错)
3.判断数据库类型(构造不同的查询特征语句)
4.这一步众说纷纭,可以开始注入,也可先确定数据库权限再开始
5.查数据库的库名,表名,列名以及相应的数据

四. 数据库类型

目前主流的数据库有三种,Mysql,Ms sql servel,Oracle(Access暂且不提)
所以简单说说三种数据库的语句区别
(初学者也只能简单学习,想学好SQL注入这三种数据库还是要好好研究的)
注意1前面和最后的那个b后面没有’这个符号,因为要构成sql注入语句(设置成了字符型SQL注入)

  • 1’ or ‘ab’='a+'b --------------MS SQLserver数据库,字符串连接,成功这返回永真条件
  • 1’ or ‘ab’=‘a’'b ---------------Mysql数据库,字符串连接,成功这返回永真条件
  • 1’ or ‘ab’=‘a’||'b -------------Oracle数据库,字符串连接,成功这返回永真条件

之后的注入就以Mysql注入为例

五.注入分类详解

1.按查询类型分类注入

(1)数字型:

例如:http://www.baidu.com/1.php?id=1
原理:注入点为数字存在于大多数网页中(一般为查看用户信息,查看文章)
1.数据库原型:
select * from 表名 where id=1
2.条件构造:
如果存在注入则可以构造select * from 表名 where id=1 and 1=1 (蓝色代表你的输入)
解析:1=1代表永真,所以代表的意义为:
1=1 and 这个页面是正确的
因此你访问页面是有效的,所以就成功了


(2)字符型:

例如:http://www.baidu.com/1.php?user=admin
原理:基本同数字型
1.数据库原型:
select * from 表名 where user=“admin”(数据库中可为单引号可为双引号)
2.条件构造:
如果存在注入则可以构造select * from 表名 where id=‘admin‘ and 1=1 ‘ (蓝色代表你的输入,注意最左边那个单引号不是你的输入)
或者这么构造:select * from 表名 where id=‘admin‘ and 1=1 ‘–+ (蓝色代表你的输入)(其中–+在sql中表注释,其他的Mysql注释还有/**/,#)
3.Q&A
Q:有人可能会问了,为什么标红的没有单引号呢?
A:因为是把admin赋值给user,然后user代入到mysql查询语句中,单引号只存在于Mysql,故在网页上不显示
Q:这个单引号怎么看不懂?
A: 看下图
在这里插入图片描述


(3) 搜索型:

例如:例如:http://www.baidu.com/1.php?keyword=xxx
原理:都差不多
1.数据库原型:
select * from 表名 where 字段 like ‘%xxx%’
2.条件构造:
如果存在注入则可以构造select * from 表名 where id=‘%xxx%‘ and ‘%1%’=’%1 %’(蓝色代表你的输入)
因为搜索型比较特殊,所以可以构造一个’%1%’=’%1%'的语句构成永真条件,
闭合的话根据数据库原型进行考虑即可

2.判断是否存在三种注入漏洞

(1)数字型
(2)字符型
(3)搜索型

待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值