从0开始学SQL注入(超详细)
前言:
终于是吧cracer的渗透教程看完了,
也终于是有点时间来整理这些凌乱的笔记了,
关于SQL注入后面会陆续把写的笔记整理成文章,敬请期待!
有什么疑问可以评论也可以直接私信
杂谈:
送给萌新的几句话:
SQL注入对于想学安全方面的人来说算是一个很基础的知识,
所以不要以为学完了SQL注入自己就是大神了,路还远着呢。
学习网络安全方面,实操很重要!很重要!很重要!
所以这方面的学习一定要以理论和实操相结合的方式,这样你才会真正有所收获和成长。
SQL注入方面的实操
线上可以去CTFhub,墨者,或者一些免费的线上靶场练练手(这里不提供了,自己勤快点)
线下可以自行搭建实验靶场,然后找诸如DVWA,Sqlilabs,等等环境(多动手很有用的)
怎么搭靶场可以参考我前面写的一篇文章
SQL注入
- 前言:
- 杂谈:
- 一.SQL注入原理:
- 二.SQL注入分类:
- 三.注入步骤:
- 四. 数据库类型
- 五.注入分类详解
- 1.按查询类型分类注入
- (1)数字型:
- (2)字符型:
- (3) 搜索型:
- 2.判断是否存在三种注入漏洞
- (1)数字型
- (2)字符型
- (3)搜索型
一.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)搜索型
待续…
从0开始学SQL注入(超详细)相关推荐
- kafka-eagle-2.0.1安装及使用(超详细)
kafka-eagle-2.0.1安装及使用(超详细) 一.简介 kafka-eagle是一个由国内团队开发的开源的可视化和管理软件.它可以同时监控多个集群.监控 Kafka 集群中 Topic 被消 ...
- MySQL8.0.22安装及配置(超详细)
MySQL8.0.22安装及配置(超详细) 大家好,今天我们来学习一下 MySQL8.0.22安装及配置,好好看,好好学,超详细的 第一步 进入MySQL官网下载,如下图所示: 第二步 进入下载完成后 ...
- sql大全超详细【转】
SQL 命令 这部分包含那些 PostgreSQL 支持的 SQL 命令的信息.这里的 "SQL" 就是该语言通常的含义: 每条命令的与标准有关的兼容性的信息可以在相关的参考页中找 ...
- SQL注入学习详细过程
sql注入学习笔记 一.union注入 1.判断是否存在注入: 2.查询字段数量 3.查询SQL语句插入位置 4.获取数据库库名 5.获取表名 6.获取字段名 7.获取数据 union注入PHP代码 ...
- 网络安全必学SQL注入
1.1 .Sql注入攻击原理 SQL注入漏洞可以说是在企业运营中会遇到的最具破坏性的漏洞之一,它也是目前被利用得最多的漏洞.要学会如何防御SQL注入,首先我们要学习它的原理. 针对SQL注入的攻击行为 ...
- sql注入总结--详细
文章目录 SQL注入总结 1.原理 2.数据库基础 系统函数 字符串连接函数 mysql注释符 union 操作符的介绍 order by介绍 字符串编码 数据库结构 导入导出相关操作 增删改函数 3 ...
- 0起点自学sql注入
SQL 注入天书-ASP 注入漏洞全接触选择自 digituser 的 Blog 随着B/S 模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水 ...
- thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...
ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...
- 测试php框架漏洞,ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...
作者: seay 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商不要再 ...
最新文章
- Third-generation sequencing and the future of genomics 第三代测序和基因组学的未来
- java client类_Jmeter中自定义JavaSamplerClient类的编写
- 太阳能正在崛起 光伏养老蔚然成风
- 百度API_获取当前详细地址
- python函数增强代码可读性_写Python必须知道的这几个代码技巧!你会吗?
- SQLServer事务的隔离级别
- LeetCode Python实现 链表简单部分
- 用js把数据从一个页面传到另一个页面
- 基于qt的贪吃蛇游戏 c语言,基于QT的贪吃蛇游戏设计
- 转:企业数字化的本质,其实就这3条
- atom平台 android ia,ZTE Grand X IN:搭载Atom平台的Android机
- svg怎么转换成png格式?
- 一键铺货API(淘宝)
- 开发者能力大赏,谁是技术知识达人?
- 遇见--CondaHTTPError: HTTP 000 CONNECTION FAILED for url 怎么解决
- 支持向量机之线性可分支持向量机(一)
- Java 应用一般架构
- 【计算机·科技】互联网的黑科技来啦
- CDOJ 1644 KKX Sequence
- 一个黑科技,Python竟然可以伪造很多'假'的数据!