栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SQL注入学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL注入学习

目录
  • 前言
  • 一,产生原因
  • 二,漏洞危害
  • 三,漏洞利用过程
    • 1,信息收集:
    • 2,获取数据:
    • 3,提权:
  • 四,SQL注入点判断
    • 1,可能存在注入点的地方:
      • 比如:
    • 2,SQL注入类型判断:
      • 数字型判断:
        • 可以使用经典的and 1=2来判断:
      • 字符型判断:
        • 使用and '1' = '2' 来判断:
    • 五,SQL注入手法:
  • 总结:


前言

SQL漏洞在CVE列表(通用漏洞披露)中排前10

SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。


一,产生原因

用户提供的信息参与了SQL语句的编译

  1. 对用户输入的参数没有进行严格过滤(如过滤单双引号、尖括号等),就被带到数据库执行,造成了SQL注入。
  2. 使用了字符串拼接的方式构造SQL语句

二,漏洞危害
  • 数据库信息泄漏: 数据库中存放的用户的隐私信息的泄露。
  • 网页篡改: 通过操作数据库对特定网页进行篡改。
  • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  • 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  • 服务器被远程控制,被安装后门:经由数据库服务器提供的操

三,漏洞利用过程 1,信息收集:
  • 数据库类型
  • 数据库版本
  • 数据库用户
  • 数据库权限
2,获取数据:
  • 获取库信息
  • 获取表信息
  • 获取列信息
  • 获取数据
3,提权:
  1. 执行命令: 读文件
  2. 读取中间件配置文件,读取数据库配置文件
  3. 写文件:写webshell

四,SQL注入点判断 1,可能存在注入点的地方:

既然是SQL注入,肯定是去寻找与数据库有交互的地方,也就是页面存在传值或者查询的地方。

存在于:注册、登录、搜索框、筛选、排序等

比如:

1.url中的GET型传参:

http://www.text.com/?id=1;

2.搜索框(POST):
前端将用户输入的数据代入到数据库中进行查询,这种以POST方法进行发送数据。
如下:

3.HTTP请求头部字段如Cookie值

2,SQL注入类型判断: 数字型判断:

当输入的 x 为整型时: http://xxx/?id = x
后端中sql语句类型大致如下:

select * from <表名> where id = x 
可以使用经典的and 1=2来判断:

url 地址中输入: http://xxx/?id= x and 1=1
页面依旧运行正常,继续进行下一步。

url 地址中输入: http://xxx/?id= x and 1=2
页面运行错误,则说明此sql注入为数字型注入。

原理:
and是两者都为真才是真。
当输入and 1=1时,后端执行sql语句为:

select * from <表名> where id = x and 1=1 

而 id =x 与 1=1逻辑判断都为真,且语法正确,所以返回正常;

但当输入and 1=2是,后端执行sql语句为:

select * from <表名> where id = x and 1=2

没有语法错误,但是1=2逻辑判断为假,所以返回错误;

字符型判断:

当输入的 x 为整型时: http://xxx/?id = x
后端中 sql 语句类型大致如下:

select * from <表名> where id = 'x'
使用and ‘1’ = ‘2’ 来判断:

url 地址中输入: http://xxx/?id= x and 1=1
页面依旧运行正常,继续进行下一步。

url 地址中输入: http://xxx/?id= x and 1=2
页面运行错误,则说明此sql注入为数字型注入。
原理相同

想一想如果我们同样使用and 1=2 判断会如何?

select * from <表名> where id = 'x and 1=2'

查询语句将 and 语句全部转换为了字符串,并没有进行 and 的逻辑判断,所以不会出现以上结果,故假设是不成立的。

五,SQL注入手法:

根据有无回显:

  1. 联合注入
  2. 报错注入
  3. 布尔盲注
  4. 时间盲注

根据提交方式:

  1. POST注入
  2. GET注入
  3. HTTP HEAD注入
  4. Cookie注入
  5. 搜索注入

其他注入:

  1. 堆叠注入
  2. 宽字节注入
  3. 二次注入

总结:

本文是学习过程中所做的笔记,希望可以帮自己理顺SQL注入,也希望能帮助初学者对于SQL注入有一个比较清晰的认识;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号