• 注册
  • 资源分享资源分享 关注:28内容:208

    网络安全笔记–SQL注入

  • 查看作者
  • 打赏作者
  • 7
    • 资源分享
    • 防御可测试-小余
      Lv1.初学乍练

      1. 基础

      a. 简要明确参数类型

      数字,字符,搜索,JSON等

      b. 简要明确请求方法

      GET,POST,COOKIE,REQUEST,HTTP等

      其中SQL语句干扰符号:',”,%,),}等

      c. 了解常用的注释符

      –+可以注释掉前面的引号,- -+可以用#替换,两者的效果相同。

      +号在语句中变成了空格。用来和后面的单引号分隔开,将后面的语句注释,了解原理后便知道了–无法使用的原因,是因为–与后面的单引号连接在一起,无法形成有效的mysql语句。

      2. 盲注

      盲注主要分为以下四种情况:

      回显注入

      无回显注入

      延时注入

      布尔注入

      先了解下常用的相关函数,以后会经常用到:

      sleep(5) # 延时执行5秒

      mid(a,b,c) # 从位置b开始,截取a字符串的第c位

      substr(a,b,c) # 从位置b开始,截取a字符串的c长度

      left(a,b) # 从左侧截取a的前b位

      length(database())=8 # 判断数据database()名的长度

      ascii(x)=97 # 判断x的ascii码是否等于97

      1

      2

      3

      4

      5

      6

      盲注就是在注入过程中,获取的数据不能回显至前端页面,需要利用一些方法进行判断或者尝试。

      盲注可以分为以下三类:

      基于布尔的SQL盲注–逻辑判断

      基于时间的SQL盲注–延时判断

      if,sleep

      # 延时5秒显示结果

      select * from users where id=1 and sleep(5);

      # if用法,当sex=0时,返回‘女’,当不为0时,返回‘男’

      select name,if(sex=0,'女','男') as sex from student;

      # 当database名字为mysql时,延时5秒显示结果

      select * from users where id=1 and sleep(if(database()='mysql',5,0))

      select * from users where id=1 and if(database()='mysql',sleep(5),0)

      # 当database名字长度为8时,延时5秒显示结果

      select * from users where id=1 and sleep(if(length(database())=8,5,0))

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      基于报错的SQL盲注–报错回显

      floor,updatexml,extractvalue

      3. 加解密

      4. 二次注入

      第一步: 插入恶意数据

      第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容。

      第二步: 引用恶意数据

      在将数据存入到了数据库中之后,开发者就认为数据是可信的,在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。

      5. 堆叠查询

      堆叠查询简单说就是一堆SQL语句一起执行

      6. WAF绕过

      6.1 相关技术

      注释符【重要!!!】

      注释符

      因为注释符#、– 都是把后面的语句全部注释掉了,而内联注释 则是注释指定部分,需要一前一后闭合,所以在传参那里几乎不做注释语句用,而是用于过滤空格等bypass

      注释符

      在mysql中 不是注释,mysql为了保持兼容,它把一些特有的仅在mysql上用的语句放在/!../中,这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行。

      表示当mysql数据库版本为4.45.95时执行后面的语句。

      数据

      加密解密

      编码解码

      等价函数

      特殊符号

      反序列化

      注释符混用

      方式

      更改提交方式

      变异

      其它

      Fuzz大法

      一种绕过思路,利用脚本,逐个测试,批量化访问地址,类似于爆破

      数据库特性

      垃圾数据溢出

      Http参数污染

      浏览器在跟服务器进行交互的过程中,浏览器往往会在GET/POST请求里面带上参数,这些参数会以 名称-值 对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的。比如下面这个链接:百度一下,你就知道 ,针对同样名称的参数出现多次的情况,不同的服务器的处理方式会不一样。有的服务器是取第一个参数,也就是name=aa。有的服务器是取第二个参数,也就是name=bb。有的服务器两个参数都取,也就是name=aa,bb 。这种特性在绕过一些服务器端的逻辑判断时,非常有用。

      6.2 例子说明

      # %23 –> #

      # %0A –> 换行符

      id=1 union %23a%0A ;%23

      id=1 union%23a%0Aselect 1,2,3%23

      # id=1 union #a

      # select 1,2,3#

      1

      2

      3

      4

      5

      6

      # Http参数污染 + 特殊符号 + 注释符混用

      # %23 –> #

      # %20 –> 空格符

      # %0A –> 换行符

      id=1

      1

      # 符号 中起注释作用,正常情况下没有执行,安全狗直接不管,但是有参数污染,真实数据是:

      -1 union select 1,2,3#*/

      select UAccount,USex,UPassword from t_users union

      select UAccount,USex,UPassword from t_users union

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      6.3 常见绕过方式

      1. IP白名单

      从网络层获取的ip,这种一般伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情况。

      测试方法:修改http的header来绕过waf

      x-forwarded-for

      x-remote-IP

      x-originating-IP

      x-remote-addr

      x-Real-ip

      2. 静态资源

      特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),类似白名单机制,waf为了检测效率,不去检测这样一些静态文件名后缀的请求。

      3. URL白名单

      为了防止误拦,部分waf内置默认的白名单列表,如admin/manager/system等管理后台,只要url中存在白名单的字符串,就作为白名单不进行检测。

      正常白名单地址如下:

      10.10.1.5/../../manager

      可以通过以下方式尝试绕过防御规则:

      链接

      1

      2

      3

      4

      5

      7. 写在后面

      由于本人初学网络安全,水平有限,更多知识后续会持续补充,让笔记条理更加清晰,易于查阅。

      ————————————————

      版权声明:本文为CSDN博主「s.wy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

      原文链接:网络安全笔记–SQL注入_s.wy的博客-CSDN博客

      QQ少年
      Lv2.登堂入室
      水贴是注定孤独的旅行,路上少不了吐槽和嘲笑。但那又怎么样,哪怕经验暴涨,我也要抢的漂亮!我是水神,我为自己带盐,偶尔也带块洋芋粑。
    • QQ少年
      QQ少年水贴是注定孤独的旅行,路上少不了吐槽和嘲笑。但那又怎么样,哪怕经验暴涨,我也要抢的漂亮!我是水神,我为自己带盐,偶尔也带块洋芋粑。
      拉黑1年前手机端回复
    • 回复
      Sameer
      Lv5.略有小成
      超级SVIP7
      靓号:666
      水晶之恋
      楼主辛苦了,谢谢楼主,楼主好人一生平安!
    • QQ少年
      QQ少年666666666
      拉黑1年前手机端回复
    • 回复
      QQ少年
      Lv2.登堂入室
      666666666
      回复
      mawinbr
      Lv4.初窥堂奥

      楼主辛苦了,谢谢楼主,楼主好人一生平安!

      回复
      Sameer
      Lv5.略有小成
      超级SVIP7
      靓号:666
      水晶之恋
      楼主辛苦了,谢谢楼主,楼主好人一生平安!
      回复

      请登录之后再进行评论

      登录
    • 任务
    • 动态
    • 到底部
    • 帖子间隔侧栏位置: