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

您所在的位置:网站首页 自学语句 从0开始学SQL注入(超详细)

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

2024-07-01 17:47| 来源: 网络整理| 查看: 265

前言: 终于是吧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)搜索型

待续…



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3